I just used the layer approach for making a pause->resume/restart screen and it works like a charm. It's the way I'd go.
EDIT: One thing to keep in mind is that sprites on a hidden layer might still be active, so you may either need to move them off the layout when layer is invisible or test to see if the layer is visible before reacting to them. Testing to see if layer is visible is easiest, but the other way isn't hard if you save off object's position as instance variables.
Also you may need to stop time or counters, so you'd add a test to see if the store screen is invisible before doing some of your statistics keeping.
EDIT 2: The downside of having your store as a layer is that you have to replicate it for every level, which could grow huge! However, keep in mind that you can create the logic that runs your store in a separate event sheet and include it in the level layout. That can simplify things if you have many levels, since you'd just have to maintain the events for the store in one place. You'll have to be the judge if this overhead of duplicating the store layout is just too much to bear.