I wouldn't mind taking a look at this. I have pretty much the right behaviour as far as interactions by just replacing the icon with a button, but I guess the selection colouring/disabling are the trickier bits that aren't there yet.

No, I think it can remain functioning. It was previously being drawn with half transparency if the tree element was disabled (I don't know how to trigger this) or TE_DRAGGING flag was set (although this is never set anywhere anyway)

The only other hiccup I'm having is replicating the shift-click to expand/close all children - setting a callback with UI_but_func_set allows this behaviour, however only the top element in each subtree can be used to start a drag...Dragging from the disclosure triangles on the other elements triggers the previous dragging of the elements themselves.

I'would complement this with the behavior as it is in the properties editor when dragging on the properties tabs - as you start dragging on a tab, only the VERTICAL MOVEMENT of the mouse is taken into account which tab is being selected, you don't have to make sure the mouse cursor goes over the tabs as you start dragging.