Il tuo ragionamento è sensato, ma il problema è sempre il punto 2 dell'algoritmo. Ti spiego meglio:
Intanto, una precisazione: ieri sera per stanchezza ho scritto una cavolata: non è vero che l'algoritmo che ti ho proposto genera due AVL separati (a "riunirli" ci pensa l'algoritmo di eliminazione dei BST al passo 1.2), quindi gli algoritmi di unione non c'entravano niente.
Ora, guarda un attimo cosa fa l'algoritmo che ti ho proposto, così vedi dov'è il problema:
1) Il primo passo dell'eliminazione prende in ingresso un AVL (che è anche un BST) e da in uscita un BST, che però potrebbe non essere un AVL.
2) Il secondo passo analizza
tutti gli antenati del nodo eliminato per trovare eventuali sotto-alberi da bilanciare.
3) I passi 3-4 effettuano i bilanciamenti.
Ti ho sottolineato un dettaglio importante, che ti avevo già citato: l'algoritmo classico, eliminando la radice, non è in grado di ri-bilanciare nulla, perché non trova antenati da analizzare.
Ti faccio vedere una cosa: supponiamo di avere questo AVL:

- 2.png (11.86 KiB) Osservato 6448 volte
Eliminando la radice (ricorda che utilizziamo la sostituzione con il successore), otteniamo:

- 3.png (10.08 KiB) Osservato 6448 volte
Questo albero non è bilanciabile con l'algoritmo classico, perché la radice non ha antenati e quindi non vengono eseguite rotazioni correttive. Sarebbe invece bilanciabile con un algoritmo modificato sì da considerare come primo antenato del nodo il nodo stesso, o con un algoritmo di eliminazione BST opportuno, in grado per esempio di scegliere se effettuare la sostituzione con il successore o con il predecessore del nodo eliminato.