For the moment, I've implemented a fix for the SitePanelBar that compares the URL of the current page's parent with the current node item in the PanelBar, and sets the node item to be selected if they're the same. That way, if I'm on a hidden child of a page in the sitemap, that page in the sitemap shows up as selected, so that the navigation context is maintained, and the SitePanelBar doesn't collapse.
Unfortunately, this means I can't have a page that's hidden from navigation and also hidden from the left nav, which may be ok for this project.
But I'd still like to know how I can persist a custom property to a page, so that I can selectively turn this on or off, depending on the value of the property.
In version 3.5 can you define custom metaproperties for pages, as well as modules based on generic content? If not, this would be a great feature for a future version of Sitefinity! A lot of other content management systems have this.