How would you design a hotel reservation and booking system that handles concurrent bookings and prevents double-booking at scale?