REF: move union_categoricals call outside of cython
There's no real perf bump to calling union_categoricals inside cython, better to do it in the python code where we can e.g. get the benefit of mypy. Plus gets us closer to dependency structure goals.


gentle ping; lots of annotations to be done around these functions id like to get this in before the upcoming PR doing annotations for io.parsers, which has recently become a blocker for #41059 thanks, can you catch @simonjayhawkins comment in next pass.