For relay sync, the right solution is probably using Epidemic Broadcast Trees.
Here’s an example of how it’s done in scuttlebutt… https://github.com/ssbc/epidemic-broadcast-trees
Plus the paper: https://www.gsd.inesc-id.pt/~ler/reports/srds07.pdf
This is a good and tested efficient way of gossiping lists of signed data like exists in Nostr.