Most likely it is an increasing memory consumption that is slowing the page down.
A few hints:
1. Make sure that you have DayPilot Pro version 8.1.1969 or later (http://javascript.daypilot.org/daypilot-pro-for-javascript-8-1-sp8/). This release significantly improves memory handling of repeated .update() calls.
2. Chrome developer tools can help a lot with diagnosing the problem. Try recording heap allocations/releases using "Profiles" tab, "Record heap allocations" option.
3. With angular, debugging memory issues can be more difficult because there is a lot of stuff done under the hoods. I would also consider using the plain JavaScript version.
4. How many times does .update() get actually called during the four-hour period?
5. Comparing the event arrays using JSON.stringify can become costly, especially for large data sets. I would consider using a hash (which you can generate on the server side and send with the data), a last-modified stamp or something like that.
6. Updating the Scheduler in the middle of a drag and drop operation may cause problems. There are tools to detect a drag and drop which is in progress. You can also block the UI during AJAX calls. But lets discuss this later, when the performance issue is solved.
7. There are a couple of other tweaks available, but you can also postpone that after the main issue is solved.
Example: You can update only the events (and not the whole scheduler) like this:
$scope.scheduler.update({events: events});
It will be faster than the full update:
$scope.scheduler.events.list = events;
$scope.scheduler.update();