I asked this question over in general, but I think it might have been a bit convoluted. When I think about it, quite simply what I want is a Related Pages module.
1. Create a page
2. There is a tab called "Related Pages"
3. This tab has a table of every other page in the system
4. This table has checkboxes for selecting pages that related to the current page.
Then in your getCMSFields add a GridField instance for managing the RelatedPages relation. An example that covers relation grid fields is http://programs.edchipman.ca/silverstripe-modules/sortablegridfield/many-many-example/