I was able a similar effect by locking all layers before adding my shape. For my needs, I left them locked, until the shapes were not needed anymore and I removed them, and then unlock the layers:
foreach (Visio.Layer layer in Application.ActivePage.Layers)
{
layer.CellsC[(short)Visio.VisCellIndices.visLayerLock].Formula = "1";
}
// Add my shapes
To unlock:
foreach (Visio.Layer layer in Application.ActivePage.Layers)
{
layer.CellsC[(short)Visio.VisCellIndices.visLayerLock].Formula = "0";
}