答えが私に当たったときに質問を書き終えたので、とにかく知識共有のために投稿してください!
メタフォン関数の戻り値がUTF8であることに気づきました。
latin1フィールドとの比較では、明らかにかなり大きなパフォーマンスオーバーヘッドが発生していました。
変数の割り当てを次のように置き換えました:
SET @metaphone_val:= CONVERT(double_metaphone(p_parameter) USING latin1);
これで、クエリは予想どおりに高速に実行されます。