Yes, we did use a column like "presentation_data" or something the like in sharenet where every package could store presentation information unique for that package. We then had callback procs (nowadays you would use a service contract) to be called with the data from that special column. These procs then returned the appropriate html blob to present the particular object.
I didn't present this as a TIP yet since i thought agreeing on something as basic as pretty_name, package_id and id->url resolution would be easier and more needed at first.