Refactor: joinDrive and combineAlways

I split the original commit up into several smaller ones, so they are hopefully easier to review. This refactoring actually introduces a small semantic change to joinDrive. I'm not sure if this acceptable, and whether it needs mentioning in the changelog.