Concurrent AVL Revisited: Self-Balancing Distributed Search Trees