check the socket after we get it from the context so it is actually
usable, any network failures will cause the context to not issue a
socket and it should be re-created

also go to only 5 iterations through servers before failing out and no
wait time between, the entire server cluster is traversed each time so 5
should be enough

also added timeouts to snd/rcv of the first alive ping as it should be
very quick to determine which server the work is for and fail quickly to
move on