I think I wrote before thinking through this one. When a package is modified as in your example, probably a number of changes will be made to a lot of the files, making it difficult to extract any bug fixes. Is there any current method used for packages, like the tagged releases for OpenACS, that could be used to protect current users from future package modifications?
I don't think it is great having multiple templates, but it might be useful to support the possibility. I have done this before just by using a slightly modified ad_return_template, allowing it to return templates based on an absolute path. Maybe if you could create a simple data model for alternate templates/directories, that gets read into an nsv at server startup, would provide a simple, general and high performance solution.