Try to be better about handling the results of getaddrinfo(): when
opening an inbound socket, we might get several address results,
e.g. for the machine's ipv4 and ipv6 name.
If binding a wildcard, then any one of them should do. If an address
was specified but it's insufficiently specific then that's not our
fault.
However, some of the advertized addresses may not work because e.g. we
don't have IPv6 support in the kernel. In that case go on and try all
addresses until one succeeds.