This is a limitation of RadScheduler in this scenario. There isn't a way to distinguish time slots that have a multiday appontment (except the time slot on which the appointment originates) from other timeslots neither server sider nor client side.
You could set AllowEdit for specific appointments in AppointmentDataBound, but I am not sure if this is what you need. If not, then you should use the approach you have already thought of - assign custom attributes and cancel OnClientAppointmentMoving
the Telerik team