When booking, can the optionRefId be a hotelOptionSearch Id? Or does it always have to be the quoteId?

No, you should always use the optionRefId from the Quote query.