I'm not aware of being able to bind different loadouts to the SAME key like you're looking for. I mean, you could cycle the loadouts, but that wouldn't help you be consistent in keeping the same loadout and keeping the ubercharge.
I know you don't like the idea of binding loadouts to the arrow keys, but if you train yourself/get used to it, it can be extremely useful. You can keep "w"-ing into spawn, and hit the arrow key (without needing the mouse) as soon as you're over the threshold///spam it. I've almost never had issues of dying in spawn by doing it this way.
It also makes it very easy to remember which loadout is on which key - I keep my medigun loadout on the up arrow since it's the easiest to hit, and I know that my right arrow is for kritz loadout. If I'm on kritz, and want to keep kritz ubercharge, I know to hit right arrow.
//Arrow key binds
bind uparrow "load_itempreset 0"
bind leftarrow "load_itempreset 1"
bind downarrow "load_itempreset 2"
bind rightarrow "load_itempreset 3"
Or just use shift for your itempreset 0, and the rest to arrow keys. You should be using uber 99% of the time anyway.
Keep it simple. Good luck.