Most (if not all) of these structures use vertical and horizontal partitions of some form, but I can't recall if there was much discussion about axis orientation in the first place. What I mean is, what if you know that most of your primitives will actually be at a certain orientation, such that using different axes would greatly reduce the number of queries you have to make. Perhaps you could rotate your scene (and all the rays), perform the raycasts, and then rotate it back? Or are the partitions/boxes used for these structures actually more flexible than vertical and horizontal? I imagine that runtime is improved when you can simply make a fixed x/y/z coordinate comparison, which is what led me to consider axis orientation as a factor.
Do there exist custom, more efficient ways of partitioning space optimized for the types of objects we're rendering? For example, if we're rendering a million kettles, would a convex hull of kettle-shaped bounding volume be better than just a standard rectangular partition?