I'm not sure you're asking the right question. Why do you care about a frame or web element?
Why not apply your WaitProperty to the actual object you will interact with in your script?
So, if your NEXT line of code is clicking a button, or typing some data into an editbox, or using a GetROProperty on a dynamic text object, or whatever, then use your WaitProperty statment on that same object.
It won't do you much good to wait for a frame to be visible so you can try to click a button that is not yet ready to be clicked - instead, you should wait for that button to be enabled.
As for which property to use, enabled is always a good one (or disabled for those glass-is-half-empty objects). If you're going to access a specific property, like doing a GetROProperty on a webelement to see if it is visible, then do your WaitProperty on the same webelement on the visible property.
If you follow this guideline, then you will always be waiting for the next object you need, and even better, you'll be waiting on the specific property of that object that you will need, rather than just waiting on some random object on the page.