I went back to the way parent/child garden pages operate opting to use the native post_parent attribute instead of my custom solution but this caused an issue when pages were archived. By removing the parent when archiving the page (and re-applying it if unarchiving the page) I've worked around this and it's quite an elegant solution.
I've also reworked the content filters (adding hashes to sections etc.) to work better with the journal posts as there was an issue when trying to navigate directly to a section.
It feels good when little things like this are fixed.