In answer to your question, there is no tool and I'm kind of glad there isn't. People rely on these types of tools too much. I would also argue that using the Builder or IDE to do the job for you is not going to be faster. In the short term, yes, long term, definitely not.
Although the builder is a lot more intelligent in it's 'finding', it is still not brilliant. XPath is where it, along with the IDE and even Firebug and Chrome's own developer console, fall over.
What will serve you will, is doing it manually.
However, if you are hell bent on using a tool, then use the Builder (just because it is a 'bit' better than the IDE) to base your code.
In terms of "why" the Builder comes up with that kind of code, it's because it's basic and simple. These tools are meant to give you basic code that works. Not fancy code that is best practice. This is something you should be doing manually. You may find what the IDE comes up with is very similar.
Any one who tries to sell off these tools as the answer to automated testing, is plain wrong. The answer is giving your testers & developers enough time to co-ordinate a decent strategy!
There is no tool that can accurately define a location strategy for a dynamic element. Something that has an ID that changes on each page hit. So what do you expect it to do? It will throw it's hands up in the air and give you it's best shot. This is where you jump in and save the day and make up a location strategy that works - this is where the IDE/Builder is going to save you short term time but you'll spend long-term time fixing it when it falls over.