CanvasLayers are meant more for Control Nodes, the UI stuff. So I think your best bet is likely to look into using z-index and perhaps even experiment with the Y-sort node. Study the SceneTree and how node order in the tree affects the draw order. I think understanding this is key to success here.
edit: To be clear, I'm not saying that CanvasLayers won't work with Node2Ds but that it can be less predictable perhaps. It would commonly be used for HUDs, so GUI but also for backgrounds. What you are trying to do might have similarities to a background, but perhaps a bit too dynamic and complex in comparison so I'm still inclined to say that perhaps Y-Sort nodes and/or manually modifying nodes z-index(thus draw order) might be a better solution here.