Container is a good idea. Add arrow to the same container with troop sprite. When you pick a troop instance, its own arrow will be picked automatically. When arrow is not needed, make it invisible.
If you make an event like "Arrow set position to troop", each arrow will set position to its own instance of troop, because they are in the same container, and you don't even need "for each" loop here.
Add a bunch of instance variables to troop - for example targetX, targerY, hasRoute etc.
If I understand correctly, only one troop can be active at a time, so instead of the instance variable isActive, it may be easier to use a global variable activeTroopUID. When a troop is tapped, set activeTroopUID=troop.UID, and then you will be able to pick this troop by its UID in any other event.
On confirmed destination tile set targetX, targerY to tile x/y.
On 'Skip turn' you can start moving every troop to its own target tile (targetX and targerY). I suggest MoveTo behavior, but you can use something else.