Lo has explicado bien, pero podrías plantearlo de otra forma.
Que los usuarios escriban los nombres como quieras y tú los guardas como quieren, pero que a la hora de hacer estadísticas, iguales esas variaciones. Puedes hacer un método sencillo que sustituyas las letras con tildes por letras sin tilde y, luego, pasar todo a minúscula para la comparación y el cálculo de estadísticas.
Con
str_replace haces quitas tildes y caracteres extraños y con
strtolower pasas a minúsculas, para tí todo esto será igual (a la hora de hacer la estadística, en la base de datos estará original como lo introdujo):
José González = josé gonzalez = JosÉ GonZÁleZ = jose GONZÁLEZ = ...
No sé, yo te lo planteo, por si te viene bien, la verdad que me parece extraño un select de 400 posibilidades. Siempre son nombres? Y por qué la idea de pueden ser 1 mínimo y 7 máximo? No es por poner en duda tu aplicación, es simplemente un intento de buscar una solución óptima.
Un saludo.
Edito: añadir que seguramente lo suyo sería una especie de "autocompletar". Es decir, que el usuario fuera introduciendo los primeros caracteres del nombre y le aparecieran varias opciones a elegir. Esto tendrías que hacerlo con AJAX, si te interesa, lo podemos mirar también.