UPLOCK to avoid multiple reads
The UPDLOCK will prevent a subsequent call from reading an order that has already been picked up, but won't allow that subsequent call from reading others because it will wait to read all the rows that fit the criteria and you have explicitly told the engine that you intend to update them in this transaction.

If you add a READPAST hint as well, it will allow subsequent calls to grab any available rows that have not been picked up previously.

SELECT * 
FROM Orders o WITH (UPDLOCK,READPAST) 
WHERE NOT EXISTS (SELECT * 
              FROM OrderEvent oe 
              WHERE oe.OrderId = o.OrderID 
                AND EventTypeId = 1)