One of the major re-writes i'm currently doing to contacts is to seperate out the contacts attribute management system. This will create a new package called attribute management system (AMS) that lets you tie revision controlled attributes to any object not just party_id (This package will auto ad_form generate the same way contacts does)... So, you'll get the attribute management of contacts on any acs_object just like you want... this should take care of Alberto's (legitimate) concerns... it will be in CVS by next week (i'm currently testing it).
Next week i'll make the offical posting announcements and the like. I think this will be valueable to all packages, since it will let them all customize their info collected. I need to write up some documentation before i announce it officially since it is a bit complex, but i'm pretty sure that this is what you are looking for. Contacts will use AMS to store its attributes and provide an example to other packages of how they can tie in to dynamically created attributes that can be used in ad_form and are version controlled via the content repository.
Contacts should be parties. This will let contacts use the group structure in the future and allow for simple migration from contact to person to user, etc... since parties are people or groups of people (orgs, etc.) it makes sense that a contact is also a party.