a)Individual users who purchase a year membership and can register with either their work or personal email address
Simply create a plan for these users, protect what you'd like by this plan so those subscribed will be granted access to various locations.
b)Hospitals who buy access for their staff. The staff need to be easily identified as staff at that particular hospital and be required to use their hospital email address to register (we currently have about a dozen hospitals and thus about a dozen acceptable email extensions for this group)
It's not possible for 1 user to by a subscription for another user. I suppose you could use CBSubs SQL Actions to grant other users subscriptions that have the same domain in their email address as the hospitals user; this would require a complex query.
c)Free 1 month long trials that automatically expire if the user does not buy a paid subscription – I know CB subs would be able to do this.
Yes of course CBSubs can provide this as you've confirmed your self.