I prefer to type in a sudo !! rather than to up arrow, then do Ctrl+A then type sudo and press Enter
Fish has a hotkey for this built-in, just hit Alt + S.
The login shell troubles are very valid however. I worked around them by modifying my .bashrc to drop me into fish, and it has been working pretty well for me so far.
The linked solution also handles only launching fish if the parent process is not fish, so you can still access bash easily for when you really need it.