If has_term, load other theme

Your problem is that if you want to switch theme you have to do it very early, in fqact, the latest action you can hook for that task is setup_theme that is fired before the theme is actually loaded, so – first of all – if you want to change the theme you should use a plugin and not a theme, this is logical: if you have the code to switch theme in the current theme, it should replace itself with another theme and this is not possible.

First reason your code fail: 'template_include' hook its too late.

Second reason: get_theme_roots doesn’t take any argument, and returns an array of theme base directories, or single theme directory if all themes are in the same directory (this is the most common case and it returns somting like /path/to/wp/wp-content/themes/). So your use of that function is wrong: hooking 'template_include' you should return a singular file and not the root of themes.

Now, let’s admit you use a plugin to switch the current theme, easiest and effective way to do that task is manipulate the 'template' option, using the the 'pre_option_{$option_name}' hook, in this case 'pre_option_template'.

See this answer and replace with 'template' everywhere you see 'stylesheet'.

However, in the linked answer I don’t rely on current request to choose the theme, but only on current date that can be calculated very early in the request, because is indepent from it.

In you case, you should check the current request and then switch the theme, but normally WordPress set the theme before run the request, that means that you should

  1. check the request by yourself
  2. switching theme
  3. let WordPress perform the request again

This is overwhelming, require a lot of work and is very low performant.

Of course, you can use 'template_include' filter to load a template file from another theme directory without changing the current theme (probably is what your code is wrote for) but in that case you will have a template file loaded from a theme and stylesheets, functions and scripts loaded from another theme: probably this is not what you want, and in best case it will appear ruined, in worst case it will break the page with a not defined function fatal error.

In conclusion, if you aim is to change apparence of single posts, I suggest to look at a plugin that extend the page template feature to posts, one that I know is this one.
then you can copy markup and styles for your single post templates from different themes…