Regarding the timing, you need a way to keep track of each tween and determine which one is the last one, before changing the state of your game (by global variable, or group enabling as you're doing).
Personally, I'd probably use (and recommend) a queue array. I would push all my tweens to a single array. As each one finishes, delete the 0th index (the one that just played), and start the next tween based on whatever is newly at the front of the line, until there are no more. All the information needed for each tween should be contained in whatever information you decide to push to the back of that array, and you wouldn't need to differentiate between types of array. They would all just go one after another until there are none left.
Example relevant data might include what to push (UID), duration of the tween, and the target. For a pause, perhaps you could add a tween of anything for the duration you want, that doesn't actually move anything, just to keep the flow of the same system.