I was having pretty much the same issue, and I can match almost all your symptoms, maybe except option 1, because for me I was actually using the gamepad to navigate the smartphone icons and run RetroArch.
Now, option 2. is also almost the exact same with me, but again the exception is that the gamepad is always woking within the menu upon starting RetroArch, only after running a game using the gamepad do I have a problem, but I don’t have a problem if I only use the gamepad after running the game with another input device, like touch screen for example, followed by a D-Pad press before any other key will make the game recognize the gamepad.
Option 3 is similar to option 2 in my case because I do not have the issue in the menu.
Essentially it seems to me that my workaround does not work for you because any interaction from the gamepad within the menu breaks the input for whatever reason. So, I suppose that when you try to press and hold the B button to launch the game it has lost connectivity/input at that point already and cannot regain it without unplugging/replugging.
Part of the issue may be the version of Android, but also as I mentioned in my first post, a part of this seems to be tied to the modern interface of RetroArch and the way it handles and hands-on/off input to the cores and back. At least from my experience these issues weren’t present in the old interface from v1.2.2, they started immediately on the next release, v1.3.0; the issue is that the old versions of RetroArch are pretty bad in comparison to the current ones, in every sense except input.
I was only just experimenting with RetroArch on Android really, but if I depended on it, my workaround does work for me; as a fallback your option 3 would also be viable, unless you accidentally touch the controller before entering the game