get_next_posts_link() stops displaying at page 4

I don’t know where $era_opts comes from but a filter on pre_get_posts should do this and preserve your pagination.

function era_blog_cats_wpse_103587($qry) {
  if ($qry->is_page('your-page') && is_main_query()) {
    $era_opts = get_option('era_opts'); // assuming that era_opts are options
    $blogcats = $era_opts['era_opts_blog_thecats'];
    if(!empty($era_opts['era_opts_blog_thecats'])) {
      $qry->set('category__in', $blogcats);
    }
  }
}
add_action('pre_get_posts','era_blog_cats_wpse_103587');

I made several assumptions about your data, but that should be the idea. I also don’t know what conditions you need this to fire on. See the first line in the function. You need to alter that line to control when this filter runs and when it doesn’t.

That function will effect the main query on the page, which will hopefully work for you. If you want to paginate a secondary Loop, the normal pagination functions do not work well. I would suggest you use paginate_links instead of trying to get those functions to work but you can see this question for other options. There are other similar Q/As here too.