I was able to fix the "all on" at the start problem by switching my message tween to "to" instead of "fromTo", so this
var message1off = TweenMax.fromTo(".message1", duration*.25, {opacity:1}, {opacity:0});
became this
var message1off = TweenMax.to(".message1", duration*.25, {opacity:0});
Hurray!
I'm almost certain that the flicker only takes place when we use your clever jump to maintain the rotation motion. I don't see why it does not render the
var message4off = TweenMax.to(".message4", duration*.25, {opacity:0});
which I attached here.
timeline.add(message4off, 1.75)
Seems like it should.
One last thing, you added the below before, Can you explain how this works? What you mean by Global Empty?
//global empty tween to control timeline
var timelineTween = TweenLite.to({}, 0, {})