It shouldn't be too hard if you have a point_clientcommand and a small little renaming system.
If you want it to be, say, one guy a team:
Have multiple spawn points in a room, have triggers around each one which get enabled a second after spawn time and have a filter that block ppl renamed to Hale. Have a trigger on one of the points to rename the player to Hale which starts enabled.
The triggers around the rest of players with the filter can have an output to change the players' team to spectate using the point_clientcommand.
You can make more triggers to rename the player to Hale to extend the player team count
EDIT: I made a quick test map for the concept. Not certain if it works as I didn't test it yet. The map has 32 slots in case all 32 ppl on a 32 person server join one team it will place them in different locations (I think that's how it works, I may be wrong and it's just random). The first guy to spawn will get renamed to hale and won't be forced to join spectate.
There would be ways to increase the player count such as having a math_counter and count up to a certain number of players being renamed and then disable the renaming system and enable the trigger to make the player join spectate.