Non c'è modo di farlo usando bene la ricerca full-text di MySQL. Quello che stai facendo (sostituendo caratteri speciali con una stringa predefinita) è l'unico modo per farlo.
Potresti prendere in considerazione l'utilizzo di Sphinx Search invece. Apparentemente supporta l'escape dei caratteri speciali e, in base a tutti i rapporti, è significativamente più veloce della ricerca full-text predefinita.