how to get archive urls with same origin for custom types and terms?

So, a first solution can be using add_rewrite_rules(). A first raw logic should be something like:

1- get term slugs you need, save in a var, say $terms_string; $terms_string should be a list of pipe-separeted slugs, suitable for regexp, like ‘type1|type2’ etc.. containing ONLY valid (allowed) values. Say use get_terms() to get all the slugs..

2- add a custom rewrite rule something like this:

function add_rewrite_rules() {
  add_rewrite_rule(
    '^products/(' . $terms_string . ')/?$', //matches things like /products/type1
    'index.php?product_category=$matches[1]', //the real query that will be executed upon matching requests
    'top'
  );
}

add_action( 'init', 'add_rewrite_rules');

It works. It will correctly show a taxonomy archive.
In real-world cases, building a consistent rule set it will be in fact a lot more involved, but this is the way. Too much code to paste here, but I’ve just made a complex api-like set of rules, also including language management with polylang. So if someone has the same tasks, go rewriting the rules.