I just thought of something that may be part of the issue.
The filter runs through ajax and I think, but I don’t recall completely, that ajax is considered and admin function, so your checks for is_admin() return true during an ajax call.
Try changing your if statements to
if( !is_admin() && (!defined('DOING_AJAX') || DOING_AJAX) )
new UnitedDJ();