IE
получаем первый свободный id пользователя: free_id = select id from t_users where email <> 'inprogress@test.com' and rownum <= 1 for update
и сразу же меняем проперти пользователя: update t_users set email = 'inprogress@test.com' where id = ?, free_id
это вариант без сервиса, меняется только логика логина