I use one tmux prefix for the local machine and another one for ssh sessions (setup in bash_profile using something like `if [[ -n "$SSH_CLIENT" ]] ; then tmux set-prefix ... etc`. You need different prefixes when using tmux recursively like this, so you can navigate both the inner and outer session.
I also use a different color theme for ssh sessions, whch helps to know which prefix to use until it becomes somewhat subconscious.
I just bind a different prefix and moved the bar to the top locally (I use urxvt+tmux with Ctrl+arrow keys etc to navigate tmux tabs instead of a tabbed terminal client) to get around the nesting issue.
For tmux, it will look at VISUAL/EDITOR so for vi keys you could just try to remember to run it as "VISUAL=vi tmux" or to run "tmux set -g mode-keys vi" if you forget.
Searching back in the buffer in emacs mode is the one thing I've been keep having to look up
Here's roughly what I use: https://gist.github.com/anthonyclarka2/f2aae1e167c7899d7d263...
It could also be adapted to anything other than ssh. For instance kubectl, aws cli, virtualenvs, etc etc.
Let me know if this helps, and if you have any suggestions!
I don't want to have to scp over my tmux conf to every single server I jump on, but OTOH difference in pretty much anything but the prefix gets really frustrating with habits. Particularly remembering all the emacs mode-keys when I really want the vi ones.