I don't think people should be able to throw others out of a selected class.
The way it should work in my opinion:
At the beginning of the map, rank matters and a high ranking player can choose a class before everyone else, so with a waiting time of 30 seconds? he can throw out any player out of any class, if he has a higher rank. Higher ranked players should be grayed out for lower ranked players, if that class is full with higher ranks.
In mid game, you can apply for a queue for a selected class. If the person that has this class dies and someone is in queue for that class, he will not be able to respawn as this class. He must choose another one (or he has a queue running of his own). When the next person in the queue dies, he fills the queued slot or when runs to a rearming point, he will be able to switch to the queued class with a button and change his loadout for the queued one.
This should be toggleable serverside, so hosts can choose to ignore rank and go for a first come first serve routine right away. Also the queuing system could be optional, if host admins do not like the shuffling of players in their classes.