Answering duplicates often happens in good faith. Even active Meta users with a crapload of dupe-fighting feature requests often rush to the "answer" button ("hey, I can write a cool answer to that!") before pausing for a second to think whether this might be a dupe. It's a natural impulse, and not wrong as such. After all, it's the reason why SO exists, and has good answers.
However, as long as answering duplicates is rewarded, and finding a good original to close it with is not, we have an ever growing problem: a flood of mediocrely answered dupes that, even if you stop worrying and start loving dupes, are worthless, because they have no connection to a high-quality original. A Googler happening upon an unclosed dupe hits a cul de sac: there is no sign pointing to the much better original question whose answers have been reviewed, critiqued, and modified many times over; they are stuck with the mediocre content, and may end up thinking that is the best answer that exist, on SO anyway. This is contrary to the idea of Stack Overflow as a high-quality archive of canonical answers.
Not awarding reputation to dupe answers has been discussed, and it's been turned down, IIRC mainly on the grounds of not pissing off answerers, which I guess is a valid point.
How about combining a softer CW approach with an invitation to good answers to be moved to the original question instead?
If a question gets closed as a duplicate, make the question and all its answers Community Wiki automatically, from that moment on (but not retroactively).
Allow authors of any answers above a certain vote threshold (+3? +5?) on the duplicate to migrate their answer to the original. Either invite them to re-post their answer on the original; however this would create duplication in answers, as the author would be unwilling to delete their answer in the dupe because they'd lose all the previously gained rep. That would have to be addressed somehow, or the feature isn't going to be used much. Or, create a migration tool that merges answers on a per-answer basis, triggered by the answer author, showing them a message like this:
Thanks for your answer.
This question has been closed as a duplicate of an existing question. It looks like you wrote a good answer - we invite you to migrate it to the original question, "concatenating a string"! Click here to start migration. Please after the migration, check your answer's wording so it makes sense even in response to the "new" question it then answers.
(an answer migration tool operated by the author instead of a mod is obviously an UI and UX challenge that would have to be thought about in more depth than this, but you get the basic idea.)
What good I think this would do:
Further activity on the duplicate would be gently discouraged, and attention be turned towards the original question.
Relatively new users with high-quality contributions would be made aware of the existence of duplicates, and be educated in how SO values building an archive of canonical questions.
Authors of good answers have a reason to re-post on the original: it's the only way they can keep gaining reputation.
The original would get new attention, and possibly a new great answer it didn't have before.
You would stop gaining reputation on the dupe, but the overall experience would be a positive one - you get to keep all the points made prior to the CW, plus you get invited to add your answer to the original question.
How about it?