The key here is that you don’t have to keep the old code side by side with the new code.
It’s there in source control and, typically, your workers are built into a docker image by your CI system.
At that point, you keep the worker images deployed for as long as there are workflow that need to run on them, and you can keep evolving your codebase independently (assuming you don’t need to patch running workflows).