As you probably know all "posts" are stored in the same database table for "Posts", "Pages" and any Custom Post Types.
I mention the previous to emphasize that all "posts" have the field
post_parent available and I have used it successfully to create a parent-child relationship between, for example, a
'restaurant' post type and a
'restaurant-location' post type.
The URLs are a good bit trickier, however, and I'm a fanatic when it comes to Well Designed URLs so you'd know I would look into is heavily.
I have implemented the code to do similar to what you ask for (for the restaurant/location example) but it is extremely fragile and has the potential to create unwanted side effects with other plugins so I'd really fear posting it here and in effect causing people more trouble than help.
While some of the more hardcore WordPress devs that frequently trac and the wp-hackers list don't seem to think there's much of an issue with the URL routing system everyone else I know who has actually tried to use it for any other pattern besides blogging struggles with it and finds it infuriating. That's why I submitted this ticket and hope to have some dedicated time to address in the near future:
Currently using Well Designed URLs is just too damn hard and fraught with peril to be a viable option. So in the short term I really recommend going with the standard URL layout until I get enough free time to tackle it, or someone else improves WordPress's URL routing system or someone even hires me to fix it.
Unfortunately I know it wasn't the answer you were looking for but it is an honest and heartfelt one.