Can a contact be registered for an event through another event
I certainly would investigate the CiviDiscount extension: https://civicrm.org/extensions/cividiscount

It might already bring functionality that would be close to what you need, if not... it has it's own API, so a custom extension that would meet your needs would be smaller with CiviDiscount then without.