Cita: siempre las personas con más experiencia en bases de datos que evitase el uso de campos autoincrementales en la medida de lo posible,
Eso es debido a la normalización de las tablas. En la inmensa mayoría de los casos es innecesario usar autoiincrementales, pero no en todos (la 3FN admite su posibilidad ante la inexistencia de determinantes).
En cuanto a las transacciones, el problema está en el ISOLATION LEVEL, que es lo que tienes que manejar para evitar precisamente lectura de datos "fantasma" en las transacciones concurrentes.
Mira esto:
15.10.3. InnoDB y TRANSACTION ISOLATION LEVEL