Tags interfering with next_post_link();

  1. query_posts() should not be used, look into pre_get_posts hook.
  2. Whatever you do inside index.php template does not influence inside of single.php template. Two different top level templates aren’t (normally) loaded at the same time.
  3. You are explicitly requesting next_post_link() to limit next post to the same category via third argument, are you sure that’s not your issue?