I'm not sure this fits your model, but maybe you can resolve the IP addresses of the hostnames once, as a cold start kind of thing, and then cache them.
That way, you avoid having to use WSAAsyncGetHostByName
which is the bottleneck, and you only need to test out the HTTP communication.
Now, assuming you have reason to suspect that a certain host has changed its IP address since you last resolved it (say, the destination was unreachable, or the connection refused), you can simply run a query again for that host.