You may want to investigate whether shovel is a better fit in this situation.
For example: run the shovel on the current upstream, predeclare the queues/bindings in the shovel config so messages will pool, and then push to your downstream, rather than using federation, or dedicated consumers etc.
When the upstream restarts and auto-magically loses its queues, the shovel plugin will redeclare the queue/bindings on boot, and whola! Your messages will still be routed and pooled before being pushed downstream by the shovel.
One of the things keeping me up at night lately is a worry that our federation links will break, the broker will lose its queues someway and we'll wind up with messages being published that just get dropped.
Is there a way we could define some kind of queue that is setup by default? The only other thing I could think is to just define alternate-exchanges for every exchange, slap a queue on it and set a consumer on it that simply republishes when federated links are established.
Other ideas? The approach I came up with feels rough.