Can this be achieve by attributes?
The following four fields would be easily possible for making "timeslot" products:


Start - date field, single date (not a range)You want a single date field because views will be more straightforward when not dealing with ranges on one field. It's much easier to do two fields and have two filters than it is to have one field with a range filter (date supports both use cases).
End - date field, single date (not a range)
Timeslot - Product title would be easiest OR taxonomy reference The taxonomy route would allow you to make the timeslots fieldable and help you connect products of the same timeslot (if it is helpful to have all 9am - 10am products in a single list).
Stock - You could use commerce_stock to create a single stock availability OR you could just disable the product on checkout. 


So, the simplest route would only include a "start" and "end" date field with the product title being the "timeslot" and using the "status" of products as a simple "single availability" flag.

Hope that helps!