1. Use fewer large-scale combats
I don't mean this to be a frame challenge style suggestion, but combat is one of WoD's weakest points, and mass combat underscores that. To keep the drama, tension, and excitement of large-scale fights, making them rarer is a really useful approach. And if they're more spaced out they can still serve the story without constantly slowing game sessions.
Particularly for VtM (as opposed to some of the other WoD franchises), open combat is something that nearly all characters have strong reasons to avoid. Large-scale combat even more so. It can be there when you need it, but if your players are fighting in one or more 2:1 sorts of fights every session there is little chance you'll be able to keep them from getting stale.
When a large fight does break out, they will be more exciting if there are dramatic and plot reasons for that particular fight. Kindred essentially never participate in resource-draining, hand-exposing wars of attrition. When they do (and there are historical examples in the lore), it tends to indicate that one side (or more sides) are pretty desperate, and also tends to indicate that they have additional vulnerabilities. Those vulnerabilities might be a better focus for the players than grinding down individual foot soldiers.
2. Populate some, or most, large-scale battles with cannon fodder enemies
Even when Kindred do commit large numbers to a fight, they're more likely to do so with individuals for whom that tactic makes the most sense. Ordinary mortals, mortals specially trained to deal with vampires, or ghouls are the types of opponents that would work much better in groups than individuals. A vampire is powerful and has a lot of potential options for fighting, and may be able to hold their own against other vampires.
Those sorts of opponents can pad out the numbers for enemy groups, but go down much more quickly than vampires would. You can still get exciting, large combats, but they won't last as long. It's also a nice framing for how powerful the PCs are-- a large group of enemies, which would be insurmountable for an ordinary person to deal with, are much less of an issue for vampires.
When I had lots of disposable enemies for my players in VtM I gave them fewer hit boxes than typical characters. That left them dangerous (their stats were normal otherwise, and there could be a lot of them), but without staying power to draw fights out. This works just as well for a bunch of experienced ghouls supported by ordinary people as it does for newly Embraced victims of a Sabbat shovel party.
3. Create more opportunities to plan for fights rather than just fighting
Vampires in WoD don't just rush into fistfights. They scheme, plot, and strike (what they hope to be) decisive blows. Antagonist groups should generally have clear reasons to attack the PCs and their interests (and vice versa). You can give PCs the ability to predict and plan for attacks on their assets, and those preparations can be shaped around getting an edge in a fight. As a simple example, booby traps or diversions might split a group of enemies so that the actual fight is smaller and easier to deal with. Or PCs might do some reconnaissance work on an upcoming target that allows them to avoid or delay arrival of some of the opponents they might otherwise have to deal with.
An approach like this can still maintain the scale of the players' opposition without necessarily increasing the number of people involved in a fight. And the longer, harder fights can serve as a sort of natural penalty for not preparing well.
This is especially effective if your antagonists have resources they've cultivated to allow them to send large numbers of subordinates into fights, but that the players can target and damage or destroy. In one of my games, my players opened a fighting gym from which they recruited competent muscle to ghoul. If an antagonist had something like that, your players might be able to "win" a lot of fights by striking at that organization proactively, rather than leaving it to generate near-endless waves of goons.
4. Plan for fights your players have a real chance of losing
Retreat is a valid option, and the intrigue of VtM can make for some interesting consequences afterwards. If combat is dangerous (and in VtM it nearly always is, given how brittle the combat system is), players might not dedicate themselves to wiping out all opponents. If they have a specific target, it may be sufficient to take that target out and then run. If things turn out badly in a more typical fight, they may need to escape or else face destruction. This can be risky, because of the brittleness of combat in this game system, but what's a better motivator than the prospect of Final Death?
This approach also ramps up the tension and significance of big fights. They are really, really dangerous and if the characters don't have plot armor they should not expect a series of all-but-guaranteed victories without changing the terms of their larger conflicts.
5. Streamline opposed rolls
This one is huge. A major obstacle to game pacing and resolving one-on-one interactions is opposed rolls, like rolling for an NPC to soak damage. It takes time to look up their stats, get the dice, compare results, and so on, and that time adds up. The quickest way I've found to handle that is to just use pre-generated roll results for each character and situation, then mark off each result as it's used.
An online dice roller, like AnyDice, can quickly produce large sequences of roll results for any situation. If you record a string of roll results for an NPC's damage-soaking roll to be used as needed, you can save a good deal of time at the table. If that's too complicated due to the large number of NPCs, you can use a set of "pooled" dice roll results: any time an NPC needs to roll 6 dice (for soaking damage, or anything else), they get the next entry on the list for that number of dice.
You can do this for any type of roll, of course, and it will save you time at the table to do so, but in my experience opposed combat rolls are the major time sink of VtM fights.
6. Don't play out set-piece moments
A lot of large-scale combat is about spectacle, and you can achieve that without tons of dice rolls. If the players are involved in a large-scale fight between Camarilla and Sabbat vampires, it doesn't really matter what the NPCs do to each other. The players' experiences should be fully specified and involve dice rolls, but NPC A and NPC B don't need that-- one can just take the other out by your decree, and no one is cheated in the process.
This helps in a lot of ways: it saves time, due to less dice rolling, it's more predictable for the Storyteller (no unfortunate rolls will disrupt your plans) and therefore makes combat less brittle, and lets you emphasize the coolness and setting- and plot-relevance of the fights.
7. Add goals and constraints to combat that aren't just fighting
This is an old standby, but if there's nothing for characters to do but clobber each other until one falls dullness will be hard to avoid. Other factors, like time limits, protecting certain characters, eliminating targets, stealing things, planting false information, causing distractions... the list of other things that aren't combat, but that combat makes harder, goes on forever.
Specific goals make combats feel more varied, even if the combat portion is pretty consistent in itself. As in (1), conflict between Kindred usually doesn't come down to picking off unlimited numbers of low-level, individual members of rival groups.