The problem is valid, however I am not sure versioning of questions / answers would help. In fact, in the example you show the question is the exact same, just the preferred answers change. However, very often an old question may not even make much sense anymore, or may be completely obsolete (e.g. "How to implement a typesafe enum in Java?" after the introduction of Java 5).
Moreover, the "best" answer is always selected by the current consensus. At any point in time, and for any language / platform / tool, there are early adopters, cautious adopters and conservatives. Usually the relative majority is in the middle group, so this is what tends to decide which answer gets the most upvotes on the StackExchange sites. And answers getting obsolete is caused by the shifting of opinions between these different groups.
But for a given thread (like your imaginary example) how do you decide that the answer voted as best in 2007 (and thus its upvotes and acceptance mark) is obsolete in 2011? Any new answer to the same question would start from 0 hence have a limited chance of getting to the top. So either you need an authority who decides what the state of the art is regarding a certain problem (which is totally against the community driven nature of SO), or you need a public re-evaluation of the question time and again, whenever the general public feels the old answers are not satisfying anymore.
For the moment, I can't think of any better way to this than reposting the same (or a similar) question as it naturally happens on SO. If the favourite answer(s) to the new question differ significantly from the old one, it is a sign that the two questions are not exact duplicates because the context has changed.
However, the current practice of merging duplicate questions may work against acknowledging such changes. The new answers can easily get buried in the group of older ones, especially if those got more upvotes back then. And if the new accepted answer significantly differs from the old one, what to do? In this case you may be right that somehow it would be benificial to keep the two questions - linked, but - separate, with some sort of mark that the answers to the newer question obsolete the older ones.