Managed to reproduce this with a ColumnStore installation containing around 250 tables and a localhost connection whilst getting the system catalog.
The network code allocates 64KB per read on the end of the network buffer assuming that we will read 64KB in. Unfortunately we may not have 64KB in the kernel network buffer yet which means the parts of the packet get stitched together in the wrong place.
The end result is lots of tables missing from the system catalog when it is read.
I had planned to re-write the read/write data pointers anyway, now it will have to be done.