Fixes #5299.
-connect and -addnode can attempt the same manual connection concurrently during startup. The existing duplicate checks cannot see a peer until it has been added to m_nodes, so both attempts can pass and open connections.
Reserve the destination in OpenNetworkConnection() before checking connected peers or starting the connection. The reservation stays in place until the attempt fails or the new peer has been added to m_nodes.
This applies to ConnectionType::MANUAL, including -connect, -addnode, manual reconnections, and addnode onetry. Automatic outbound connections are outside this change.
The functional test checks the original two-node startup case. It also holds a manual connection in a local proxy handshake and verifies that an overlapping attempt is rejected, that a failed attempt releases its reservation, and that equivalent numeric addresses share a reservation.
Unlike #27804, this handles attempts in the connection manager rather than deduplicating configuration arguments. Hostnames use their original string as the reservation key, so different names that resolve to the same endpoint may still overlap. This avoids an extra DNS lookup.