makes all locks and tlses private and lazy

We do need lazy to be robust, because initialization sequence might
trigger synced operations in unexpected order, leading to NPE's.

Even if this is optimizable by removing some of the lazies or by
carefully reordering cake layers, there's no guarantee that all this
effort won't break after another reflection refactoring.