Since you cannot use one Canvas as ItemsPanel for multiple ItemsControls, you might find a way to make them into one List, at least Nodes and Offices. You might try to find an abstraction for them or use Object instead.
Now you have an ObservableCollection with a Storage. You can use ItemsControl with Canvas as ItemsPanel using DataTemplate to draw all Nodes and Offices on it. Next is adding Storage. I think you have two choice, maybe other people have better, either put it into the list also and add another DataTemplate or write your customized Canvas, exposing a dependency property for binding to Storage and override OnManipulationDelta method. Frankly I never tried second and cannot say it will work but you can refer to this article for details: http://blogs.msdn.com/b/mim/archive/2013/04/16/winrt-create-a-custom-itemspanel-for-an-itemscontrol.aspx
Hope it will help.