I made a small optimization in block.populate() [avoid hash copying into std::unordered_map using std::ref] which has at least offset the cost of writing the prevout cache. 678 secs vs 683 secs previously for the first 50k blocks validated (295k-345k) from disk.
(edited)