I don' t really see your problem - could you elaborate a bit on ' every time...' ?
Jeff' s suggestions are perfectly viable but IMHO do not offer more efficiency.
Either you work with address groups (moving new members into a group), or you create a new VLAN and policy (which is work as well, even scripted). You could use ' interface groups' a.k.a. Zones to keep the number of policies low, and add a new VLAN interface just to the Zone when you create a new one.
I would refrain from using one VDOM per dorm - the amount of overhead is not worth the effort. For 5+ VDOMs you would better use a FortiManager to manage them. In a way, the FM is scripting for VDOMs.
So, what do you have to do ' every time' ? Add a user, add a subnet or VLAN?
Ede Kernel panic: Aiee, killing interrupt handler!