Going by what you said it really should be working. Are the invisible sprites you're using the same sprite for both players, or a different sprite for each one? This could be your problem. You should pick the right sprite you want to control using "pick" events.
If you don't want to use repetitive events when making controls, you can try a For loop. I'm pretty sure it won't help you solve the problem you're currently facing but it's a good way to have less events.
I do it like this:
Keep in mind that in this example I have the same sprite for both players though - I differentiate them in other events , using the object IID to set their animations (player 1 should always be playing "run"&player.iid for instance, so the animation name is "run0", while player 2 would be "run1").