That seems really, realllyyy complicated. I feel it may be easier to use only one world to minimize disc space, and actively update the world as chunks are loaded so no tracking and copying is necessary.
Say, if it becomes winter on the server, you can update the world to have a top layer of ice form on rivers and other bodies of water gradually, like plant growth, and slowly add snow layers to the top layer of blocks. And if it becomes summer, you can replace the ice with water again and gradually make the snow layers get replaced with air.
You would also need a world specific resource pack plugin to specify which packs go to which worlds, so instead of needing something like that, use packets to modify what biome data is sent to the server, so maybe plains gets white grass and the sky goes to a light gray. That way you could also have snowing in biomes that don't naturally snow. This would eliminate the need for resource packs, but as a side effect, grass can only be so white because the default grass isn't fully white.
I understand this is very similar to Vivaldi, like you stated above, but it could be less intrusive on the world itself, allowing for snow to gradually pile on the ground instead of falling fast while snowing. That way, you can still get the good looking snow while keeping the players happy and not having it snow and obstruct their vision as often.