Custom template won’t load for a custom post type (custom permalinks used)

The problem in your code is the lack of proper rules.

You add 'rewrite' => 'CPT/%states%' in register_post_type() arguments.
This causes that the rules generated for pathologists post type begins with
pathologists/%states%/ and the address pathologists/alabama/ (pathologists/{term}/) will not be matched. More importantly, all posts from the custom category are displayed regardless of the type, because the rules do not set the post type.

Here you will find similar question, the only difference is the order of elements, you have {cpt}/{term}, in the question is {term}/{ctp}.

The code below will add rewrite rules you need. When you add or remove a term of states taxonomy, the rules must be regenerate (use filters created_term, delete_{$taxonomy}).

add_action('init', 'se343186_rewrite_rules__states', 15);

function se343186_rewrite_rules__states()
{
    $cpts = ['pathologists', 'other_cpt'];
    $tax_slug = 'states';
    foreach ($cpts as $cpt)
    {
        add_rewrite_rule( '^'. $cpt. '/([^/]+)(?:/(.+?))?/page/?([0-9]{1,})/?$',
            'index.php?taxonomy='.$tax_slug.'&'.$tax_slug.'=$matches[1]&'.$cpt.'=$matches[2]&paged=$matches[3]&post_type=".$cpt,
            "top'
        );
        add_rewrite_rule( '^'. $cpt. '/([^/]+)/(.+?)(?:/([0-9]+))?/?$',
            'index.php?taxonomy='.$tax_slug.'&'.$tax_slug.'=$matches[1]&'.$cpt.'=$matches[2]&page=$matches[3]&post_type=".$cpt,
            "top'
        );
        add_rewrite_rule( '^'. $cpt. '/([^/]+)(?:/([0-9]+))?/?$',
            'index.php?taxonomy='.$tax_slug.'&'.$tax_slug.'=$matches[1]&paged=$matches[2]&post_type=".$cpt,
            "top'
        );
    }
}