There are quite a lot of issues with your game. I think they all can contribute to the poor control system, and not only with wall jumps.
Here are just some that I found in about 2 hours...
1. Your character sprites have non-symmetrical collision polygons - the distance from the Origin point to the left and to the right of your collision polygons is different.
As a result, when the character is near the wall and you mirror it (pressing A or D), you character either becomes ~30 pixels away from the wall or ~30 pixels inside the wall. I believe this is the biggest problem which ruins your wall jumping. Also when you just walk to the wall and turn around, your character often jumps.
Changing the collision polygon fixes this.
2. As you have 3 characters with platform behavior, event though you disable it for two of them, some platform events are still triggered for inactive characters. For example, Wall Jump2 and Wall Jump3 events are triggered even when character 1 is active. This has at least one bad outcome - your JumpCount doesn't work correctly. There maybe a bunch of other issues with other platform events.
You need to review all events and make sure that when one character is enabled, the other two are completely disabled (not trigger any events).
I don't know why you've chosen this mechanics. I think it would be better to have just one character object with 3 different animations. It'd be much easier to code and you could've avoided all these issues.
3. Events in Layers group are triggered every tick. This may not cause any real problems, but I would definitely fix this too.