Ok, got you on that. I asked this because I know the chain rule is like Dy/Dz * Dz/Dw …

Registering a hook to the each of the parameters of a module would not affect future gradient computation, because parameters are leaf tensors. If you registered a hook to a non-leaf tensor (e.g., the output of your module), yes it would do what you describe, and you would only need to register a single hook in that case.
So I guess you could just do the below actually:
mod = nn.Linear(2, 2)
y_hat = mod(x)
y = mod(y_hat)
y.register_hook(lambda x: x/10)
y.sum().backward()

In this case, you can avoid registering hooks directly on the parameters as well so it should be okay to use the same mod twice. But the issue is that it would also affect gradient computation of the second backward as well. So we can actually register another hook to multiply by 10 again.
mod = nn.Linear(2, 2)
y_hat = mod(x)
y_hat.register_hook(lambda x: x*10)
y = mod(y_hat)
y.register_hook(lambda x: x/10)
y.sum().backward()

Does this resolve your issue?