In my view the "vi way" is to forget about a insert as a mode and instead, treat i(nsert) and a(ppend) as commands, with the to be inserted string as an argument, terminated by <esc>.
[count] command [argument ESC]
I have never seen direct confirmation that vi commands were modelled on TECO, but they seem too similar for it be entirely coincidence.