It was buffering issues. I needed to add the -U flag to tcpdump. This causes packets to be written as soon as they're received.
-U
tcpdump