I've now got a basic naïve block sync going for multiple concurrent peers. Apart from lack of validation it's basically the way v3 works. Nice to see that 10 arbitrary concurrent peers syncing blocks-first has about the same block rate a single fast peer. CPU load is balancing nicely across peers and memory is being held very constant over time by the OS.