What you've described (Painter's Algorithm) is indeed the way it's usually done. There are however maybe a few things to consider in addition:
If you're sorting by object, then there are some limitations. These might not be super important in your case, but if you have a lot of complex objects with transparency, your sort might break in situations like this, where A is the camera and B and C your transparent objects:

sourceMany of the objects in your scene may be outside of the viewport/frustum so there's no point in sorting those. Usually sorting is done after frustum culling on every render call, rather than every time an object moves or so. In other words, on rendering, you get the visible transparent objects, then sort them, then render them. You kind of get part of that for free anyway by storing in a BSP tree.
There are alternative commutative blending methods that are rendering order independent. Those might be worth a look at. What you want to search is Order-independent Transparency.