The checkpoint time-stamp stored in scom_event/alert_checkpoint is getting set in the future. When the powershell script sets the checkpoint, it uses the most recent date/time from the event log data (or alert data). The new checkpoint will be in the future if any client machine clock is misconfigured in the future. This prevents new data from being processed because the script only processes events newer than the checkpoint (TimeGenerated > $event_cp).
A simple fix would use the scom server's clock to set the checkpoint. That solution would, I thnik, duplicate results for clients with clocks misconfigured in the future. However, this would be less onerous than the current situation.
I partially solved the problem by substituting the timeadded for timegenerated field. Timeadded is the time the scom db records an event.