Is there a better way to do this? Do A for X min, then B for Y minutes, then A for Z minutes

No need for a shield. You just need separate power with its ground connected to Arduino ground.

Unless you deliberately chose to omit the breaks, I suggest you add them and retest.