War mit dem Schreiben der Frage fertig, als mir die Antwort einfiel, also poste ich trotzdem zum Wissensaustausch!
Mir ist aufgefallen, dass der Rückgabewert der metaphone-Funktion UTF8 war.
Der Vergleich mit einem latin1-Feld verursachte offensichtlich einen ziemlich hohen Performance-Overhead.
Ich habe die Variablenzuweisung ersetzt durch:
SET @metaphone_val:= CONVERT(double_metaphone(p_parameter) USING latin1);
Jetzt läuft die Abfrage so schnell, wie ich es erwarten würde.