Wouldn't it be simpler to make magic act as its own niche? Simply don't create spells that allow wizards to become another class outright. Wizard spells should focus on things that only the wizard can do, like casting energy spells, charms, far-seeing, etc. They shouldn't focus on spells that make them abetter at being another class than someone of that class, such as True Strike, Stoneskin.
Could there still be a Knock spells? Sure, but it should never allow the wizard to be better at opening a lock than a rogue of the same level. So for example, spells that replicates skills should only grant, for arguments sake, lets say a bonus equal to half what the average "trained class" skilled user would get in that skill. If a rogue (the class who can Train in Open Lock) should have an average +8 to Open Lock at level X, then Knock should only grant a +4 bonus to a Wizard's Open Lock check at level X.
Spells that replicate another class's shtick should allow a Wizard to attempt to make up for a missing skill-set (following the idea that you don't have to have the "Core 4" party of Fighter, Cleric, Wizard, Rogue) but should never be able to completely replace another class's function.
I think this in itself would go a long way to re-bridging the gap between casters and other classes. From here, you have to expand the other classes, like the Fighter to be more "epic" at high levels, just in different ways than a wizard is.
On a side note - Another wizard spell controlling idea as mentioned above, would be to bring back multi-action casting. Higher level combat spells could require full round casting, or even say 3 Standard Actions to cast (technically a round and a half). This would also help control high level casting, and at the same time it could allow for a new style of casting. If a spell requires 3 standard actions, it doesn't necessarily have to be consecutive. You could cast, move, cast, move, cast - for instance.