Thanks for the explanation.
I’m still unsure why you are rewrapping the layers in two nn.ModuleLists. I assume you are trying to use one nn.ModuleList for the “frozen” layers and another one for the ones, which should be fine tuned?
Rewrapping the model would not be necessary, as it can break the architecture (functional API calls might be missing), and you could just manipulate the .requires_grad attribute to freeze parameters as mentioned before. Here is a small example:
for param in model.layer_to_freeze.parameters():
    param.requires_grad = False

where layer_to_freeze should be replaced with the layer names in your model.
In case you are using e.g. nn.Sequential modules internally, you could of course use them as parameters() will return all parameters recursively.