Basically I have a scroll view full of widgets w/ transparent backgrounds. Then, outside of the scroll view, I have a UIWidget that has its top anchor anchored to the top of the scroll view and bottom anchor anchored to the bottom of the last element in the scroll view. This makes it stretch from the top of the list to the bottom element of that list, and it updates correctly when the user drags the scroll view up and down. It is easier to just show you:

Anyway, it all works fine, except for the update issue I mentioned above. After testing, the strange culling issues I mentioned before seem to be unrelated (I reverted my LateUpdate modification and still had issues with a vanilla UIRect class,
so I've posted here.
I've modified UIRect and given it a LateUpdate as well as an Update function. I've added a public bool to UIRect (UseLateUpdate) and if it is checked, the UIRect will run on late update (otherwise the LateUpdate just returns immediately. This way, I don't modify the way NGUI works too drastically - only some of my anchors are updating on LateUpdate and those anchors generally belong to widgets that sit at the bottom of the hierarchy tree and don't have any other objects anchored to them. Havn't had any issues with it so far, its working well!