FallingSnow understood the problem perfectly, actually. SMBX just can't do what you're saying it should be doing. When an event is triggered, it is only triggered in that specific moment. There's no memory bank or whatever for a layer being hidden twice. For all intents and purposes the game acts as if it was only hidden once, and thus when it is unhidden once, it appears. Event triggers don't really have the option for multiple conditions. You can't tell SMBX not to show the layer if the dragon coin was already taken. There's no way to do that. I don't even need to download the level to tell you that. (Though I did, to be certain.)
Apparently that's not your only problem though.
Why does it act as if I just grabbed two coins? Look at the score. THAT, I can't explain. You didn't actually place two dragon coins on top of each other, but when it gets unhidden, it apparently acts as if there are two dragon coins in the same spot.
But anyway here's what you do. You have to create an event that triggers the dragon block to disappear, but it has to happen immediately AFTER the P switch has been hit. I can think of a way to do this off the bat:
http://www.sendspace.com/file/init53
I made the dragon coin death spawn an invisible floating goomba. Then I made the P switch appearify the block BUT also an invisible lava tile over the goomba. The goomba's death caused the block to invisify.
That's the best kind of solution you're gonna get with SMBX, though there's probably a better way that involves less noise and less work while adopting a similar method.