The level 11 PCs are going to raid a tower/school filled with low-level wizards/clerics/fighters of a variety of races and levels. Is there a more elegant way to simulate the massive amount of low-level enemies besides making character sheets for every individual wizard?
Run the encounter more narratively
Miniatures-on-a-grid has the potential to crush the pace of what could be a great encounter. Instead, take a leaf out of the AngryGM's webpage and consider that the D&D combat mechanics are completely unnecessary, and that there is no such thing as a combat encounter.
This passage from the linked article is of particular note:
For example, imagine tenth level PCs facing down a horde of fifty zombies, each with half a challenge level or whatever. Maybe they are guarding a town gate. Right? I’d love for my game to have that scene. And it doesn’t really strain my credulity. Gimli, Will Turner, and Viggo basically won the battle of Helm’s Deep or Minas Tirith or whatever. But could you imagine trying to run that in a standard D&D combat? It’d be boring as hell! And depending on the edition, the zombies would pose practically no threat at all. It’d be boring and low stakes. Which is why I’d run it narratively. I wouldn’t try to impose combat rules and an action economy on it. I’d handle it more freeform. Let the players wade through a few zombies with each good hit, don’t roll for damage, just assume a hit kills, give the zombies a few attacks in response to every action the players take, and so on. It’d be a f$&%ing awesome scene.
Assume a constant AC for the 'grunts', and one-hit kills. A superior attack roll may allow a deft fighter or powerful spell to take out more than one. Then you simply track the number of remaining enemies as a kind of 'horde HP'. As your setting is interior, you may want to track this per room - bonus points for allowing the numbers to shift room-to-room.
Handling class features
This is great and all, but you've got trainee wizards/clerics/fighters to contend with! These guys might have some skill! Well, you can reflect that in the 'attacks' that your 'mob' gets on the players. The following are some ideas for emulating class features and other tactics being used by many enemies.
Magic: the odds of making a lot of low-level save DCs can be emulated by a single, high-level save DC. Try increasing a low-level spell's DC by 1 for each caster in the room. Even if they are of different schools or types of magic, and casting different spells, you can use this to drastically reduce the number of rolls. If you have wizards and clerics and druids around, and someone fails a DC, roll against a pre-prepared tables to see what spell it was they were hit by.
Sneak attack: Why you are attempting to raid a ninjitsu dojo I do not know, but a single spot vs hide check can work the same way as a single save DC for the spells. Add 1 to the hide roll for each low-level rogue. Failure means +1d6 on a damage roll, +1d6 for each 5 points you fail by.
Bull rush: The fighters try to force you out the window, back whence you came. You take your attack of opportunity, maybe knocking one down before they engage. Then they get +1 on their opposed roll for each of their number.
To be honest, the same can apply not only to any class features but any tactics even the most mundane massive group of enemies attempts to employ. Moves like charging should be disallowed due to the confined space. Flurries of blows create a nice breeze that cools the PCs down. Probably cap the number of Bards that can effectively sing at once.
Stat out your enemies as a group. If there are varied races and the like that would have ability modifiers, just assume there are enough of them that it all averages out. Pick a variety of spells and abilities suitable for the group - don't go trying to track what each individual guy has cast.
If you are tracking grunts-per-room, have a threshold that lets the players move on, or a DC to push past that gets easier as they fall - once the number gets too low, consider having grunts surrender.
Keep it moving, keep it varied
Your raid encounter should not be 'players vs mob of wizards in a school environment'. It should be the challenge of stealing the MacGuffin, or kidnapping the princess, or planting the bomb; whatever their goal is (I assume it isn't simply 'slaughter everyone'). By running it narratively, rather than on the grid, you can more easily weave in traps, branching pathways, optional tactics (rolling that smokestick in first, barring that door behind us, etc), and the like. Players might look at the combat laid out on a grid and think simply in terms of kill everything to move on.
Give every enemy of a particular type (cleric, etc.) the same stats. For spells, either have a couple of "loadouts" and randomly switch between them, or give all of them the same spells. For example, "all student wizards know either Magic Missle, Burning Hands, or Some-Other-First-Level-Spell-I-Like. All teachers also know Stinking Cloud."
If you want to switch things up, do it on the fly. IE, "Okay, this particular sage has Boots of Dancing instead of a Wand of Fire because they rolled over the last two".