In Calendar Dispatch views, make the appointments static (in the column currently labeled Unassigned Appointments). Allow an appointment to be dragged and dropped repeatedly to any/all cleaners to assign. Conversely, allow the reassigning and unassigning of a cleaner by dragging the appointment off of that cleaner's schedule and dropping it to another cleaner (as currently works), or back to the Appointments column. If an appointment is not assigned to any cleaner, highlight or grey out.
The limitation with the current functionality is that an appointment exists on the dispatch view only as many times as it has employees assigned. So, if only one employee is assigned, another employee can only be assigned by editing the appointment.
Alternatively, 1) allow appointments to be duplicated/copied-pasted within the dispatch view or 2) build a Calendar View by Team. That would allow an appointment to be assigned with a single drag-drop action.