I missed post#6 above. sorry. That has the most important information.
I did some testing using 5.4.x kernels between a few different systems here. They have a multitude of different NICs.

Both running 5.4.0.x
$ uname -r
It is using an old Marvell NIC driver=skge. The other NIC inthat machine isn't good - realtek 8111h, I think. It was dropping packets.
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec   513 MBytes   430 Mbits/sec                  receiver
Going between 2 other systems with the same kernel on both, using virtio drivers (VMs on the same physical machine):
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  30.4 GBytes  26.1 Gbits/sec                  receiver
That tells me it isn't the kernel, but a driver or HW issue. I did some other testing with the 5.4.x kernels. All worked as expected. A 5.4.x kernel (i211 NIC) to 4.15.0-132-generic (usb3-gige-nic)
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  1.07 GBytes   918 Mbits/sec                  receiver
All fine, as expected. That's going through 2 GigE switches too.

My main system has an Intel NIC, but it still runs 4.15.x with 16.04. The other 2 physical systems just got 5.4.x kernels last week, but they have really old NICs on the front network. They get over 500 Mbits/sec.

Sorry for the complexity. think it is a driver or hw issue, not the kernel. NIC drivers can be dependent on the kernel.
Can you isolate 1 NIC as the problem?