Cita: El problema es que entre los clientes no hay comunicacion alguna, asi que muchos de sus inserts van a a producir error porque algun otro cliente ya ha insertado ese elemento.
El segundo insert queda en espera durante X tiempo (configurable) hasta que la tabla queda liberada por el primero. En ese estado, si la clave ya existe, simplemente no ingresará.
En este contexto puedes usar un INSERT IGNORE para contrar el evento de error si el error no te interesa, pero lo que debes tener en cuenta es que la PK de esa tabla no puede ser en ese caso autoincremental. Debe estar creada en base a campos propios de la tabla, porque sería la única forma de evitar duplicaciones.
Si sólo puedes manejar autoincrementales o numéricos controlados por aplicación, deberás administrar el ingreso de próxima clave antes de la inserción, lo que implica una consulta. Siendo que los vas a manejar con transacciones eso no debería ser problema: bastaría conque la consulta de la próxima clave estuvie4se también dentro de la transacción.
Lo que te conviene es graficar en alguna planilla o en diagrama, los diferentes estados de concurrencia posible para ver cómo resolver el tema.