If it's just about changing skin of the character and all skins have the same animations names then the proper way would be to create an invisible player sprite which will have all control/movement events and each skins as a separate sprite with proper animations groups.
Now whenever you need to change the skin you simply spawn the skin sprite on the player sprite and pin it to the player. As all your skins have the same animations (walk, jump, attack, ...) you simply run the set animation function with the proper param ("walk", "jump", ...) in a generic way, so one code will work for all the skins.
Why do you worry about "copy events for each created sprite"? Events go to player and skins are just animations, so you don't need any control, collision or whatever events on them.
Also this way you keep the code clean and easily maintainable. If it's a big project then I strongly suggest to focus more on proper code rather than on optimisation which in this case won't give you much advantage if you put all in one sprite. Even more... one sprite with tons of frames (all skins) will be pretty memory consuming for no reason as I assume you will not use all skins in each layout?