Wire endpoint-to-multiaddr resolution for challenge transport failover
Peer discovery now persists multiaddrs alongside peerId in the
replication_state table. The failover challenge transport's
resolveEndpoint hook queries SyncStorage to map PDS HTTP endpoints
to libp2p multiaddrs, enabling direct P2P challenges before falling
back to HTTP.
- Add peer_multiaddrs column to replication_state (with migration)
- Update updatePeerInfo/clearPeerInfo to handle multiaddrs
- Add getMultiaddrForPdsEndpoint() lookup (prefers /p2p/ addrs)
- Pass multiaddrs through PeerDiscovery → ReplicationManager → storage
- Wire resolveEndpoint closure in server.ts challenge transport setup