Did some more work on the headers protocol today. One of the things I wanted to look at was the benefit of obtaining identity hashes from the wire serialization (vs. the header.hash() method, which reserializes the header into the hash accumulator). The tradeoff is memory (caching the hashes) for speed (no need to reserialize to obtain the hash).
With headers the expected gain is minimal, since the reserialization is trivial. However, the net difference when applied to the headers message is about 35% reduction in header sync time. I found two very reliable peers, which have fast and reliable times for header sync. They average 14.5 seconds without the caching and 9.5 seconds with it.
This implies that the advantage to for applying this to tx hashing should be significant. Even 35% would be huge, but I'd guess we'd be closer to 50% improvement.
(edited)