Is there a less hackie way to achieve this? The reason we went this way is cos we need different set of tags for blog posts and integrations, and this is the only way to achieve this I could find.
I cannot think of another way to handle this, and you are certainly not alone in taking this approach. Even though nested taxonomies are not documented, I suspect (but cannot guarantee) that this is future proof.