I'd think that you can use a global handler in combination with the article I provided to exclude anytime a user, user settings or user roles are updated. Anytime a user's roles are updated so is the user object. So simply speaking, check the object type and if it is a user or user settings or even user roles, then don't log that staging event. Users and roles and user roles are all objects according to Kentico so it doesn't matter if one is part of the application architecture or not, perform a check to see what's being updated.
Thinking about this more, you'd need to check for recursiveness and say if it is a specific recursive key, then update a variable, then continue on with the other updates and if that variable is true, then exclude that update event from the staging log.
I believe the answer of "...there is no solution beyond extensive customization of source code..."is not entirely correct. I believe it is possible, although Kentico won't provide you with a solution unless you pay for it (as any consulting company would require) so even though you think it's a shortcoming, I'm willing to bet it can be done without source code and creating a global handler.