xmpp bridge
now you can mirror only per room https://github.com/saqura/xmppwb
see our discussion we have with maintainer on https://github.com/saqura/xmppwb/issues/9
For your second point, you could write a script that queries the list of rooms from the Rocket.Chat REST API and generates an xmppwb config file that contains corresponding bridges. You could use a Rocket.Chat outgoing webhook that listens on all public channels and use that for each bridge so that you don't have to manually create a webhook for each channel.
is a wish from many: https://github.com/RocketChat/Rocket.Chat/issues/404
they seem to have it: https://github.com/sdelements/lets-chat