that for larger files, with more extreme pitch settings [groove~] is preferable to both [play~] and [wave~] as far as accuracy and reliability goes. I personally prefer [play~] driven by a central [phasor~]. For deeper issues, you may want to look into the externals available at maxobjects.com; but I tend to stick to native objects until an issue becomes unsolvable.
I can’t comment on [2dwave~] as I’ve never used it, but search the forum for it and you’ll find helpful hints.
ps here are 2 videos demonstrating some cool stretching techniques; the first is my example, the second uses tapin/tapout:
I like play~ because if you drive it with line~ you can use the pause and resume messages. Moreover, if you make line~ go from 0. to 1. first and multiply by the endposition later, you can insert a rate~ object in between to change the playback speed and direction in real-time.
However for very long files the sound is not as good as with groove~.