How to prevent entering a time-slot that is already taken when using the Calendar module?
I'm not aware of any way to use the Calendar module for this. However, you may want to look at this set of modules (with an official D7 release) that may help to implement the logic you are trying to implement:


Availability Calendars (Reported installs: 2.061 sites).


  ... allows you to add an availability calendar to entities. Example use cases are tourist accommodation, e.g. bed and breakfast, holiday homes or self catered apartments, and car or motor bike rental.
  
  An availability calendar shows your customers at what dates your accommodation is still available and at what dates it is already booked.

Rooms (Reported installs: 1.575 sites).


  ... is a booking and room management solution for hotels, vacation rentals and B&amp;Bs.


Its module page also mentions some related modules you may want to look at, such as:


Rooms Package: Define special offers for bookings.
Rooms Availability Constraints - Allows admins to define availability constraints such as the minimum period of a booking.
Rooms Views- Provides a "Rooms availability" filter and a "Booking form" field to improve the Views integration for Rooms.

MERCI (Reported installs: 441 sites).


  ... can extend any content type into a list of unique reservable items (like studios) or buckets of interchangeable items (like DV cameras). We followed the approach used by Organic Groups, Feed API, and Scheduler and added MERCI's configuration to the Edit tab of those content types.

Resource Conflict (Reported installs: 329 sites).


  ... allows for users to book resources for use during events. For example, a student can book a microscope for use within their lab.

Simple Reservation (Reported installs: 202 sites).


  ... provides a simple and easy way to reserve items which can be created by the administrator. Examples for it's usage can be hotel rooms, boats, cars, airplanes, basically anything you can think of which can be reserved by one individual.
  
  The module provides the possibility to create reservations for other users (dependent on the permissions), and provides also restrictions in the maximum number of reservations a user can make and a maximum time a reservation can be made in advance.
  
  There is NO support for payment, booking and what ever one could imagine beyond the pure and simple reservation, and it is also NOT intended to create more than this simple functionality.

Room Reservations (Reported installs: 156 sites).


  ... for use by academic libraries to manage access to and use of their study rooms.
  
  All academic libraries have rooms set aside for student study and collaboration. These rooms are often available on a first come, first serve basis. Many libraries would like to have a room reservation system that would allow students to better plan their use of these often scarce resources, but setting up and administering such a system without computer support is a very difficult and time consuming undertaking.
  
  The Room Reservation module was created to meet this need. It allows any library to very quickly put together a reservation system customized to its own particular requirements. And once the system has been set up, it performs all the functions necessary to manage the use of group study rooms with practically no involvement from the library staff.
  
  Although this application was written specifically for use by academic libraries, it could also be useful to any facility that provides rooms that can be reserved and used on a short term basis.



Booking Systems Comparison

Refer to Comparison of Booking System modules for a comparison of various modules related to bookings / reservations.

This comparison contains some other modules (not mentioned in my answer here) that might be worth considering also, e.g. in case of requirements that are slightly different (as compared to those in the question here).

How to pick the module that fits best

I've ordered my recommended shortlist above by number of reported installs. Though that is often a good first indicator, it should not be used as the only criterium to pick a module.

So do your homework to pick the right one for you. E.g. by using criteria such as those I often use for selecting module, as mentioned in the community documentation about Maintenance Scorecards. Here is the intro about it (from that page):


  ... contains a list of 23 criteria (=28-5) that might help to evaluate
  the maintenance and support of contributed modules. Below is an
  attempt to apply those criteria to each of the native charting modules
  ...


Obvious, these scorecards are related to "charting modules", but the same criteria are applicable, IMHO, wheneven you need to decide between multiple modules.

Disclosure:
I'm the author of that community documentation page (partially inspired by the 28 criteria in the issue linked near the beginning of the scorecards paragraph).