Everade, what you want is exactly what Ultima Online used to do.
You need to create a variable for all objects that are physically in the game to represent the Z (Height) Axis like newt said.
You would always need to adjust the object's Y thru custom movement according to the Z axis that you created. Construct does'nt have this built in. Z-Ordering would still be in effect, considering that an object with a higher Y is always drawing on top of the things below it, avoiding the issue you would have with disabling everything below.
Stairs are more tricky, not sure how you could accomplish that in construct, you would need to gradually increase the player's Z coordinate as he moves up in it, unless you "teleport him" to the top room when he uses a stair object, then your Z could be based on what floor he is,
Z = 1 -> Y = Y + Z * (offset).
I might be talking out of my ass, but I think that might do it... Someone correct me if i'm wrong..
EDIT: I had'nt seen the second page of the post.
You could add an additional condition checking for the Z coordinate when doing collision checks avoiding issues of colliding with things under or above the player...