With zsh:
zmodload zsh/files
autoload -Uz zmv
mkmv() { mkdir -p -- "$2:h" && mv -- "$@"; }
zmv -n -P mkmv '(<1600-2020>(-<1600-2020>|)-[^0-9-][^-]#)*(#q.)' '$1/$f'
Remove -n (dry-run) when happy that it does what you want.
(zmodload zsh/files is to make mkdir and mv builtin to speed things up as you have thousands of files to rename which means as many invocations of mkdir and mv).