You should use a microflow to check if the chosen time is available. Use an On Change microflow for this when picking the date and time. In the microflow do a retrieve off all the reservations. Loop over those and check if the picked date time lies inside of the reservation. You can use a statement like if $pickedDate >= $startdate and $pickedDate <= $enddate then true. You should also do this for the picked enddate. Because the reservation could begin in a free slot but end in a slot with a reservation.
Then based on the outcome give a message to the user that the slot is not free or commit the reservation if it is.
Hope this helps.
Regards,
Ronald