Well, I'm totally agree with your approach.
But in that case we need a Clone which will accept the new password. ICloneable.Clone() can't be changed, but new constructor (accepting password and old connection) would be good solution. Otherwise (and when it's not red marked in documentation and visible only from source) it's a bug.
We don't want to copy-paste what you've done with cloning catalogs. And we don't want to have a password hanging somewhere plain in the connection.
Thank you.
Max.