Can command substitution be nested in variable substitution?

No, you can't. bash and most other shells (except zsh) don't allow nested substitution.

With zsh, you can do nested substitution:

$ echo ${$(echo 123)/123/456}   
456

Yeah, you can do that - kind of. It's really not pretty. It's more like in-line than nested. The problem is you have to operate on the value of the parameter you expand - if that parameter has no value then you won't do much. So, you can assign the value while expanding it and it's hardly a shortcut.

v=; echo "${v:=${0##*["$0${v:=$(xsel -bo)}"]}${v/copi/knott}}"

I use the $0 param expansion within the chain to hide the assignment. It assigns the var's value within a nested assignment expansion. The outer takes precedence - but because it would just expand to whatever the inner one does it's hard to tell. However, if we silence the inner expansion, then modify it you can get what you want. After copying your string to my clipboard (I don't have xclip - just xsel) it prints:

Here's a string I just knotted.

It's a little clearer what's going on if you leave $0 out, though:

v=; echo "${v:=${v:=$(xsel -bo)}${v/copi/knott}}"

That prints:

Here's a string I just copied.  Here's a string I just knotted.

...because the inner assignment occurs before the modification, but, as noted, the outer assignment takes precedence - and it expands to both the inner-assignment's expansion and to the modified inner-expansion.

Of course none of that works at all if the targeted parameter is already assigned - so you can only do it surely if you empty the variable in the first place... which, honestly, is probably the most convenient time to assign it after all.