Which is most efficient?
Vague and difficult to answer. The computational complexities are all well-defined. If that's what you mean by efficiency, there's no real debate. Indeed, all good algorithms come with proofs and complexity factors.
If you mean "run time" or "memory use" then you'll need to compare actual implementations. Then language, run-time, OS and other factors come into play, making the question difficult to answer.
Which is easiest to implement?
Vague and difficult to answer. Some algorithms may appear complex to you, but trivial to me.
Which is most often used?
Vague and difficult to answer. First there's the "by whom?" part of this? Haskell only? What about C or C++? Second, there's the proprietary software problem where we don't have access to the source to do a survey.
But crucially, which do you recommend?
I assume this belongs here because it's open to debate.
Correct. Since your other criteria aren't very helpful, this is all you're going to get.
You can get source for a large number of tree algorithms. If you want to learn something, you might simply implement every one you can find. Rather than ask for a "recommendation", just collect every algorithm you can find.
Here's the list:
http://en.wikipedia.org/wiki/Self-balancing_binary_search_tree
There are six popular ones defined. Start with those.