Instead of periodically purging orphaned echo_event rows using removeOrphanedEvents.php, we should actively delete them when the last thing that refers to them is deleted. This means that when an echo_notification row is deleted (because the user exceeded the 2000 notification limit) and when an echo_email_batch row is deleted (because the email was sent), we should check whether the echo_event rows they refer to still have other things referring to them, and if not, delete them.
When deleting these echo_event rows, we also need to delete the corresponding echo_target_page rows, per T221261.