Closes #6476
-bind only affected the listening socket. Outgoing connections used whatever
source address the OS chose, so on multi-homed nodes traffic could originate
from an unintended interface.
Store one -bind address per address family and bind() the socket before
connect() for direct connections. Proxied and CJDNS connections are
unaffected. Loopback bind addresses are skipped.
A functional test verifies the source IP seen by the receiving node matches the
-bind address.
Based on vasild's approach in #6476 (comment).