I think we are maybe back to one of the things the booking-feature was made for.
I will describe some scenarios:
Scenario 01
You have a category for each of the activities: Tennis and football.
For the tennis category you have set that booking the court is with fixed time (ie. 2 hours) and a gap is set to be 15 minutes (to prepare the court for new players).
When players makes an event (booking) for the tennis-court, they set the players in the notification-field so they can be notified x days before the match. When the event is made, no-one else can book the tennis-court in the specified time.
This is the booking for the court. Then you have a tennis coach. He checks via a list where he selects the category=tennis. He now sees that from xx to yy there must not be made more bookings as he will have used his amount of time.
He then makes an event(booking) that spans from xx to yy. He uses the tennis-category for the event, which means that the footballers are still free to book the footbal lane.
No tennis persons can then no more make bookings before the time yy is reached.
Scenario 02
Same as scenario 01, but there is only one coach so the coach has to block all activities in the period xx to yy.
He (the coach) then simply makes an event where he uses a category that blocks all other categories.
If you have more tennis lanes, then you make a category for each lane.