"Also, what would be perfect, is if the outcome of each registration pre-determined the role on the Clearpass (because the different lifecycles of users will also determine firewall policies on the controllers (which might vary later)."
I don't think you can do this dynamically from a registration perspective without user selection, but you can force the sponsor to select the user role when approving the account and restrict sponsors/operators from setting certain roles. This is configurable under the "Actions" option of your self-registration profile where you can set the role override to "prompt". If you also force operator authentication, you can restrict role access for the sponsor based on what operator profile they are assigned.
For example, if the sponsor/operator is a reception user, they only have access to set the 1 hour user-role for instance.
Its important to remember though that this would only provide your role assignment from a security/firewalling perspective and not directly related to their expiration time.
To deal with the expiration time and validation of sponsor email, you can format your instance of the sponsor email field, if that is the one you are using, to be of type "Radio Buttons" and use options generator of "Use Options". You can then input a custom list of key | value pairs for user selection. However, to validate which sponsor group is chosen based on the expiration_after field, you will need to write a custom validator argument I'd imagine.
Hope this is of some help ;-)