Skończyłem pisać pytanie, gdy dotarła do mnie odpowiedź, więc i tak publikuję w celu dzielenia się wiedzą!
Zdałem sobie sprawę, że wartość zwracana przez funkcję metafonu to UTF8.
Porównanie z polem latin1 wiązało się oczywiście z dość dużym obciążeniem wydajnościowym.
Zamieniłem przypisanie zmiennych na:
SET @metaphone_val:= CONVERT(double_metaphone(p_parameter) USING latin1);
Teraz zapytanie działa tak szybko, jak bym się spodziewał.