I´m actually trying to do the same thing, and what I´ve done and which seems to work ok so far (even if I´m sure there is a smarter way of doing it), is something like this (pretty close to what you have done)
I have two global variables: DestinationX and DestinationY
I have an "Exit Sprite" with three instance variables: nextX, nextY and NextLayout.
I place the sprite where I want an exit to be.
Then I set the variables in that sprite instance to where I want the player to "teleport" to.
Then I have an event saying something like (if I recall correctly):
Player -On collision with ExitSprite -> set DestinationX to ExitSprite.NextX
-> set DestinationY to ExitSprite.NextY
-> go to Layout(ExitSprite.NextLayout)
And on each layout I have an event saying:
On start of layout->create player at DestinationX, DestinationY
Also, I noticed that I had to have the player sprites (I have a hitbox, a "movebox" and the actual animated sprite) on a separate layout not used in the game to avoid duplicate players to spawn in the layouts.