запрашиваю его наличие в стороннем сервисе
Неразумно. Сторонний сервис может отвечать минуту-другую. Всё это время в БД будет висеть транзакция. Само по себе это не плохо, но привести может к каким угодно последствиям.
Как можно организовать status: 2 вместе с транзакцией?
Транзакции вам в принципе нужны только для атомарности, т.е. обеспечения консистентного состояния БД при изменении нескольких записей сразу. Например, списать деньги со счета одновременно со сменой статуса на "оплачен". Блокировки таблицы на время создания - это плохо. Запрос "другого пользователя" будет просто висеть. Попробуйте для начала сделать вообще без транзакций, потом по коду посмотрите, какие могут возникать неконситентности. А дальше - по ситуации.