I am looking at a few plugins, and stageshow+ seems to be exactly what I am looking for. (no 800 pounds of bloat like all the others, and not 1000 bucks either)
The only problem I see is that I need a way to have season ticket holders be able to reserve their seats for a single performance of each show. The best way I can think of is to have recurring coupon codes that are only valid once for each show, and the season ticket holders have a static number that is assigned to them. Once that coupon number is used, it is invalid until the next show.
Also, tickets are reserved over the phone and in person as well. Is there a way to enter those tickets into the system to keep the theatre from overselling a performance through online sales?