If the button cannot be kept visible in the other frames, then using variables to set the visibility will work as an alternative. They don't need to be _global, but they will need to be declared on a layer that extends the full length of the timeline so that the _visible status will remain in effect. Then only change that value when conditions call for it.
So create a layer for these variables that extends the length of the timeline and declare them in frame 1 and then conditionally assign their initial values...
var h1Visible;
var hc1Visible;
if(h1Visible == undefined) h1Visible = false;
if(hc1Visible == undefined) hc1Visible = true;
What that does is make it so that the first time thru that frame the values are set to true/false as shown, but when that frame is returned to, they are no longer undefined, so they will retail whatever value they had.
So then what you do is assign them to the objects in the frames wherever else in the timeline where you need to...
stop();
hole1_mc._visible=h1Visible;
holeCover1_mc._visible=hc1Visible;
holeCover1_mc.onRelease=function(){
h1Visible = true;
hole1_mc._visible=true;
hc1Visible = false;
holeCover1_mc._visible=hc1Visible;
}