PS3 controllers are weird. They save the last connected device into their firmware, and only remember to connect to that device when turning on. There’s nothing the host device can do about this behaviour, so if you’re rapidly switching between host devices you may experience issues like this.
However, point 2 does sound like an issue with Batocera. Have you submitted an issue report about it? Could you try it on the latest beta image?