Ho trovato che usando SELECT ... FOR UPDATE posso risolvere il problema degli accessi concorrenti, la entry selezionata viene bloccata per tutte le transazioni diverse da quella che esegue la SELECT, mettendo la select come prima cosa sono a posto.

La tua visione della cosa comunque non è male, vedrò di implementarla.