Enable P2P repo serving and peer fallback fetch
Extend getRepo and getBlocks XRPC endpoints to serve replicated DID
data from the BlockStore, enabling other P2PDS nodes to sync repos
from peers instead of only from the source PDS.
Add peer_endpoints table to track which peers have which DIDs,
populated during manifest discovery. When syncDid() fails to reach
the source PDS, it now falls back to fetching from known peer
endpoints sorted by freshest data.