Como no podia reproducir el fallo con el uso normal de la aplicación, he modifcado las aplicaciones para que con un timer realicen operaciones cada X segundos, de esta forma ejecuto varias instancias y puedo realizar pruebas de concurrencia. Pues de esta forma si he podido finalmente reproducir los errores. Ahora que ya puedo reproducir el fallo, he probado esto ultimo que comentaba de cambiar de 'no wait' a 'wait' y con este tipo de transacciones ya no sucede el fallo.
De hecho ni intentando provocarlo.
Imagino que este modo de transaccion tiene que penalizar quizas en rendimiento, aunque en mi caso que son pocos usuarios (<15) no lo he notado. ¿que opinais?