I must admit, I thought I understood your requirements a couple times, and have written a few responses, but each time I re-read your last post, I come to a different conclusion, that negates my response.
It sounds like your vertical menu is not an issue here, for you always want to display everything (based on level).
It is your horizontal menu that you have problems with... It sounds like you already know that you could limit the horizontal to a display the root levels only (RootOnly attribute). You also could limit the menu to display the first 2, 3, etc. levels via the ExpandDepth attribute. But what I think you are asking for is to have the horizontal menu have one root item that displays 3 levels deep, and another that displays 1 level deep... and somehow you need this configured by a page setting. The page setting your choosing to determine whether to display or not is the hidden setting. This will make the horizontal menu function as desired, but your vertical menu now suffers... Hence the need to ignore the setting on the vertical menu only...
My confusion comes in on why you would ever want overlapping menu items... lets say you have a hidden page SubTest (tabid=50). Lets say you have its hidden property set. Lets say its parent is called Test (Tabid=40). It seems like you would want the horizontal menu to only show Test, but you want your vertical to show Test AND SubTest, as opposed to SubTest (and its children)... For I believe you could accomplish the later using the StartTabId...
Am I understanding your correctly?