Back in the very beginning of the Sharenet project did we add a table called acs_objects_description that held name, package_id etc.
I don't recall exactly how long it took us to make the various OpenACS packages we were using on the project to play nicely with acs_objects_description, it wasn't much work though. And the effort paid back handsomely because otherwise expensive and/or very complicated queries had become easy to implement and quick to perform.
Timo did a similar change to the AIESEC code. Maybe he can tell us how long it took there - it's not that long ago.
As for the upgrade. Here's an idea Tilmann had during a f2f meeting (f2f narcosis?). Those fields could be added without NOT NULL constraints to allow for a certain upgrade period e. g. a minor release.