Use more generic (and SQL Server compatible) locking in reserve

The code in reserve seemed unnecessarily DB specific and fragile, replaced it to use AR lock method instead. The motivation was SQL server compatiblity