Is there anyway for scapy to give better/more precise information?
Only if the pcap files you're reading have higher-precision time stamps.
For the capture file created with tcpdump, it would have had to have been captured using tcpdump 4.6 or later, linked with libpcap 1.5 or later, and captured with --time-stamp-precision nano
as an option to tcpdump. Otherwise, the time stamps in the file will have only microsecond precision.
You'd have to look at the first 4 bytes of the capture file from vmnet-sniffer to see whether its time stamps have nanosecond precision (the same test will work on the capture from tcpdump). If the first 4 bytes are A1 B2 C3 D4 or D4 C3 B2 A1, the time stamps in the file don't have nanosecond precision; if they're A1 B2 3C 4D or 4D 3C B2 A1, they do.
If scapy uses libpcap to read pcap files (there are Python wrappers for libpcap), then it would also have to use special APIs to request that libpcap supply nanosecond-resolution time stamps (for backwards compatibility, libpcap will, by default, discard the higher resolution and supply seconds-and-nanoseconds time stamps even when reading nanosecond-resolution-time-stamp files). If it uses its own code to read them, that code would have to know about nanosecond-resolution time stamps.