Would it be worth cythonizing some of the types in the Python modules
Upside is that it's relatively simple to do and the static typing basically guarantees some speed increase
Downside is its another dependency and makes the Python less readable
Additional thing I want to add is we may be able to create CPP Wrappers and then import them as Python modules using Cython (but the upsides and downside are basically the same as the above point)