Using contacts as event locations
It would require a change to the core function CRM_Event_BAO_Event::getLocationEvent().  Right now, it only pulls addresses that are tied to existing events.  Theoretically, the schema supports addresses that are tied to contacts also being tied to events, but there's no way to set the contact ID on an event address or vice-versa.

In one sense, it would be nice to have an extension or core feature that is an address manager for merging addresses.  (In civicrm.org, there got to be two locations for the trainings we have at AGH Strategies: one on Colorado Avenue and one on Colorado Ave. NW.  There's no way to merge them with each other, let alone with the record for the actual company.)  Alternatively, it would be nice to have a third option besides "Create new location" and "Use existing location"--a "use contact's location" option would be basically what you need.

However, it does introduce one potential question: what if the contact moves?  If the AGH Strategies office moves to 14th Street, let's say, we'd edit our contact record at civicrm.org and the same address ID would now read 14th St. NW.  If those event records were tied to our address rather than a separate one, they'd suddenly say that trainings from last year were held on 14th Street rather than Colorado Avenue.  Now, the location of past events isn't usually a concern, but it might be one for some folks, maybe to demonstrate all the places they've had events or to research areas that are underserved.  Tying event locations to contacts would, at the very least, introduce this problem.