How to reset/remove added filters ‘posts_join’ and ‘posts_orderby’ after the loop is completed?

There is a couple of ways to achieve this,

  1. use a custom query for your widget using get_posts function where the query attribute suppress_filters is set to false (the default). This would ensure your filters are not fired for this query.
  2. add better validation to your filter to figure what is the query on which to apply the filter and else return. Use WP conditional tags to test for the page you’re on (category archive page) as opposed to a sidebar/widget query.