Currently the discovery process selects one of the discovered IP addresses of a node to be the "primary" IP address and is stored in DiscoveryNodes.PrimaryAddress. We then use this primary IP address to map to the IP_address column in the Nodes table.
The TopologyData table is populated by seeing what Nodes in the Nodes table have the same IP address as the PrimaryAddress in the DiscoveryNodes table and then determining the connections from that node to any other nodes and interfaces via the same mechanism.
Hence, if the PrimaryAddress of the discovered node happens to be the Loopback IP, then Connect Now will work, otherwise, it will not.
We are looking at making this better.