We already discussed this on IRC, but I will put it here so that others can see.
MooseX::Storage does not handle recreating references in this way. It is simply a serialization module that takes an object, decomposes it and writes it out to disk in the chosen format. This works best with object trees, meaning objects that do not share references with other instances, kind of a DAG (directed acyclic graph) but not exactly.
What you have going on here is more of an object graph, which is more appropriate for KiokuDB, which does handle shared object references in the way you need them.