From the Blender.SE Help Center (emphasis added):
Accepting an answer is not meant to be a definitive and final statement indicating that the question has now been answered perfectly. It simply means that the author received an answer that worked for him or her personally. Not every user comes back to accept an answer, and of those who do, they might not change the accepted answer even if a newer, better answer comes along later.
The purpose of accepting an answer is for the asker to reward the answer that worked for them personally. While StackExchange encourages askers to accept answers, since accepting encourages participation, gives rep benefits, and (usually) pins the most helpful answer to the top, accepting an answer does not mean that the other answers are bad, or incorrect.
The usefulness of an answer to the community is signified by voting, not by whether or not it has been accepted.
In some cases where there are multiple, well-received answers, and each answer was similarly useful to the asker, it may be appropriate to not accept an answer.
You said:
We're denying our community of valuable answers, and we should either allow multiple accepted answers, or find some other way to honor second answers.
StackExchange has already provided a way to "honor second answers." Regardless of whether an answer is accepted, you should always upvote answers that are useful. This is the best and primary way to show appreciation on StackExchange.
I doubt this has any chance of being implemented any time soon. It has been asked before on Meta.SE and answered by the StackExchange community managers with a definite "No":
I think it's a terrible idea. Good, useful answers will be rewarded, by the voters who find them good and useful.