Agents / Agencies as usergroups
Please review agencies functionality. I suppose they should be implemented as usergroups and this group should be created on package installation. it would be more flexible way, + you'd be able to setup different privileges for the agencies + agents, etc.
Sponsored functionality would allow to setup plans for accounts to switch their usergroup on payment completion.
Discuss this in details once you start working on this.