How can I allow a person to create multiple orders at once, for both themselves and others? I have a site that offers in-person trainings and I'm currently using CRM Core to track registrations.  That is working just fine, but I am having trouble coming up with a flexible way to pay for these registrations online.

Example use case:

I have a group who will be taking a class together, say 5 people.  I'd like to allow a single person (the person organizing the group) be able to register all 5 people (already possible), but then select which of these registrations to pay for, creating separate orders for those the organizer doesn't want to pay for.

Say I am registering myself, my spouse, my kid, and 2 friends.  Each registration should create a line item, but I want the first 3 (me, spouse, kid) to be on one order I'll pay for immediately, with the other two becoming separate orders each owned by the other students.

Once I figure this out, it should be easy to then send emails to the other two students letting each know a new account has been created for them w/instructions on how to log in and pay for their registration.

This seems like something others would have thought about before, but I can't find any info on how to make it happen.  Any suggestions?
Honestly, this sounds like a place where your best option will be custom code. The only thing I could see you doing without custom code is creating two variants for your event registration products, one that is free as a "reservation" and one that is the full price as an actual registration. This means the line items would be present on the order until the customer completes checkout, at which point you could process the order to split it up and then send out e-mail notifications as needed. To capture the e-mail address information, I'd add a field to your line item type to collect it as part of the Add to Cart form, allowing you to loop over the line items later and create user accounts / generate e-mails on a line-by-line basis. The main challenge there will be grouping multiple "reservations" into a single order via a simple rules loop... at the end of the day, this really smells like an ideal use case for custom code.