reconcile
fun reconcile(current: List<RelayCatalogEntry>, discovered: List<DnsRelayRecord>, refreshedAt: Long, fallbackUrl: String, dnsAuthenticated: Boolean): RelayCatalogPlan
Reconcile durable relay rows with authenticated DNS discovery.
Empty or unauthenticated discovery selects fallbackUrl without pretending it came from DNS. User exclusions remain durable.