Individualized Calendars

Have been extensively searching for an answer on how to accomplish this and can't seem to wrap my brain around this, I have also submitted this as a request. Thanks for any feedback!...

I would like to enable different companies to create schedules for their staff and then create a way to have a booking page based on the service or staff member.

Say Company A is a massage business. Massage Therapist 1 works from 9 am to 3 pm M-Th

I would like a client to be able to book only between 9 to 3 M-TH

Additionally to auto-adjust dates and times accordingly like in the following example: if the client books a 60 minute massage at 9:30 with a recovery time of 15 minutes, I want available times to be listed outside of the time slot AND to not allow booking say during the 9 am slot, if the service+ recovery time exceeds 30 minutes. AND I want the client to be able to select from a multitude of services with different lengths of time. 

It would also be nice if the client could book recurring appointments, without being able to select the end time, as ideally this will's a lot I know, it's just really whats holding me back