I think that we should implement versioned symbols. If you have not already done so please look at the log for bug#136707. I believe my writeup in that bug log of how versioned symbols interact with symbol resolution and under what circumstances it will cause ABI compatibility issues with other distributions.
I believe that given the options versioning core libraries is the right solution especially until ld.so gets scope resolution. I think even beyond that time versioning some libraries may be necessary. Note that while db2 was versioned, the maintainer ran into significant problems on hppa and a few other architectures. There are a set of symbols that cannot be versioned. I believe that the right solution to make this easy to implement in a manner that minimizes upstream patches is to provide a wrapper for ld and/or gcc. The debian/rules file could include some directory with this wrapper in the search path ahead of /usr/bin. The wrapper would include a version script when building certain shared libraries. I invision the wrapper reading a config file pointed to by an environment variable to know which libraries should be versioned. I think the trick will be finding out a reliable way of knowing what symbols must not be versioned. But I'd certainly be interested in helping someone do a demonstration that versioning a significant number of packages is doable. I will even eventually get around to doing it myself in some ideal future, but non-volunteer jobs are keeping me rather busy right now.

