I have not run this type of encounter before as a GM. But from being a player in these types of encounters and discussing with our GM and other players what could have done to improve them here is what we came up with.
To avoid too many turns I would set a turn limit. Given that a round is approximately six seconds in DnD and that most fights last less than a minute we can use this as a reference.
By the sounds you are looking at a small skirmish maybe 50 combatants on each side. If they splinter of into groups of say four to seven you are considering about 10 seperate fights. These won't be exactly simultaneous though as everybody is running around trying to get into or avoid a fight and distance would be a factor.
So figure out how many rounds it would take to get from one end of the village to the other plus a few extra to accommodate a sub-optimal route. Then add 10 (a good fight laats about a minute) you got your time limit.
This might seem like a lot but it is the maxium to run it for.
I would add a weight to each combat group. What I mean by this is give each NPC combatant a score of 1. If they are a good fighter give them a 2 and if they are an important piece in the fight a three. Then when they run into each other allow the fight to go on for a number of rounds 2 or 3 and award victory to the highest weight group.
If the group has a PC then run the encounter for the same lenght and subtract the deaths from the total and have the loosing side route.
Also allow the PCs to make non combat actions that might buff their allys and debuff the enemies (rousing speaches, terrifying battle cries, clever cantrips)
This could keep the rolls to a minimum while keeping them meaningful at the same time.
Dealing with the players
Needless to say that they should be the center of attention. Let them take command of the NPCs and even make a few rolls on their behalf. Let them in on the weighting system aswell either in the meta game, or through a skill roll. Give them a high ground or way to see what is happening on the battlefield.
I would give them a specific goal aswell like holding a strategic point or being the spear head of the attack, pushing through to confront the big bad leading the demonic assault.
Also have a plan B if the demons over run the village. I have never known a group to quit a fight (despite previous TPKs). So give them a reason to retreat e.g: protecting the innocents or have a second balanced encounter planned where a challenge is issued by a solo or a command group that party has a chance of winning and overturning the result.
Have either side achieve their goal. The party could have broken the back of the demons or killed their commander so they retreat. Or the demons got what they came for and make a break for it.
If the turn limit is reached add up the remaining weights and get the loosing side to flee. Make this as cinematic as possible and still give the PCs something do.