http://dev.mysql.com/doc/refman /5.0/es/create-index.html
"Un índice ÚNICO crea una restricción de modo que todos los valores en el índice deben ser distintos. Se produce un error si intenta agregar una nueva fila con un valor clave que coincida con una fila existente. Esta restricción no se aplica a los valores NULL excepto para el Motor de almacenamiento BDB. Para otros motores, un índice ÚNICO permite múltiples valores NULL para columnas que pueden contener NULL".
Entonces, no, no puede hacer que MySQL trate a NULL como un valor único. Supongo que tiene un par de opciones:podría hacer lo que sugirió en su pregunta y almacenar un "valor especial" en lugar de nulo, o podría usar el motor BDB para la tabla. Sin embargo, no creo que esta pequeña diferencia en el comportamiento justifique hacer una elección inusual de motor de almacenamiento.