I run a SaaS that allows for court bookings. A tennis club has exactly this scenario: club offers 1h, 1.5h and 2h bookings, but 30m start. Since it is a private club and requires a membership, gaming the system is not a real issue. However, they can never be fully booked because of the 30m holes.
They open at 7am so in the mornings bookings are on the hour. Competitive junior athletes start at 2:30pm shifting to half-hour starts in the afternoon. So they mess up their schedule to accomodate them.
The non-optimal solution is to avoid proposing slots that would create 30m holes. For example do not offer 5pm if a booking ends at 4:30pm. We implemented that but it does not solve the fundamental issue. And they don't want to change. Such is life!