Add AdvertiseAddr / AdvertisePort functionality

Adds `AdvertiseAddr` and `AdvertisePort` to allow the advertised address to be different from the bind address.

*Current* tests are modified so that they pass given the renamed variable (`Port` -> `BindPort`) but other than that, these changes are not explicitly tested (although existing tests should pass) - because honestly I'm not quite sure how to go about testing these.