Flags, rules and node type situation got a situation with flags, rules and node type...

I have an event website where people can add events to their own calendar. Once the event is completed, they can then edit their "registration" to add comments and other details.

I am acheiving this using Event type, Flags and action.
Node type: Event
Node Type: Registration
Flag: Add to calendar (attached to the event)

When the event is flagged by the user, a rule is set to to create a registration and update some field to link to the related event and keep the flag id in the registration.
Another rule is triggered if the Registration is deleted, it unflag the event.

Not sure if there's a better way to do this? Any suggestions? Better practice?
It's working, but the problem I have is that it's taking a lot of time to load the edit form of the registration. I am going to try the token tree optimisation, but if there is a better solution, I'm willing to give it a try.
Also, using the current system, it creates a node for every event added to the user calendar.

Thanks
It sounds to me that you should have a look at the Entity Registration module as an alternative to simplify your current setup. Some more details about it, from its Community documentation:

The Entity Registration module provides the ability for users to register for any entity in Drupal. Registrations are fieldable entities and can collect any information you need from your registrants. By attaching a Registration field to any entity, you enable users to fill out a form containing customized fields to register for that entity.
Entity Registration currently has the following features:

Registrations are fieldable entities, so collect any information you need from your registrants
Unlimited types of registrations, or bundles.
Enable registrations of a given type/bundle on any entity type or individual entity through a registration field.
Per entity registration settings like capacity, reminders, etc.
Send broadcast emails to registrants.
Allow a single user to register multiple registrants.
Integration with Views and Rules via Entity API.