Why not just weight each factor you mention, and then sum up the total points, then rank based on those points, and the top point earner gets the "Best Answer".
If two are tied for the top answer, then have a tiebreaker. Perhaps it should go by the highest weighted factor. So if two answers are tied, yet one person has a higher thumbs up (or whatever is more highly weighted), that person wins.
It sort of eerily reminds me of college admissions practices lol.
The problem with any weighting system is that there is disagreement over what weights should be. Also, the results might not be realistic.
For example, some people may have a high best answer percentage, yet may also do a bad job on a particular question. A high weight for BA% may result in a high ranking, yet not reflect the answer's quality.
In any case, Yahoo uses such an algorithm when people are voting for best answer. It's just that the weight on the vote is 1, because no other criteria are used when the answer goes to a vote (I dont think Yahoo even has a tiebreaker other than additional votes).