It turned out to be a simple fix; having seen an example here, I changed the following:
std::vector<Node*> m_children;
to
boost::ptr_vector<Node> m_children;
which requires the following include:
#include <boost/ptr_container/serialize_ptr_vector.hpp>
However, I'm not sure why this works (objects were not being tracked possibly?), so an explanation would be welcome!