Worked off some technical debt in address pool management today. This included adding services and timestamps to address pool serialization/deserialization, which required a new config::address class (these classes wrap objects to provide command line and settings file parsing, but in this case for the hosts file. Now we can avoid connecting to hosts with insufficient services, which will reduce effective connection time (by not wasting connections), which is a material factor in initial block download.
Also implemented checkout/in of addresses form the pool. This reduces the instances of attempting connection to hosts we are already connected to, which will also reduce effective connection time.
Actually we get pretty good connection time regardless, almost instant, because of batch connection. But this will allow us to reduce the batch quantity to achieve the same rate. Probably from 10 down to 5 or less concurrent attempts per intended outbound connection.