Thanks for all the suggestions. Have taken pcap dumps with commands tcpdump -i any -w /tmp/sip_tcp.pcap host <counterpart host>
http://whdd.org/sip_tcp_server.pcap http://whdd.org/sip_tcp_client.pcap
The only obviously bad thing I see is "[TCP Previous segment not captured]" mark on the packet client side dump which is the ending of INVITE request body. Googling on this message, I've found some advice at StackOverflow to tune TCP socket TCP_MAXSEG option.
http://whdd.org/sip_tcp_mtu800_server.pcap http://whdd.org/sip_tcp_mtu800_client.pcap
For this test I have set MTU to 800 on the server's only actual net interface, and restarted Kamailio. The situation stays the same, despite the packets show differently in wireshark. On client side, there's still "[TCP Previous segment not captured]", and on server side there's a mark "[TCP segment of a reassembled PDU]".
Any review is greatly appreciated!