My $0.02
1) you can avoid any symlink by setting objects/info/alternate to the objects dir of the original repo, and then fetch the refs you need (Very likely just refs/branch-heads/NNNN and the commit to cherry-pick)
2) Considering that often cherry-picks in a release branch apply cleanly, you could have a fast-path in git-drover which generates the cherry-pick commit without needing any working directory at all. E.g.,
git reset branch-heads/2526
git show SHA1_to_cherrypick > /tmp/patch
git apply --cached /tmp/patch
git commit -m 'Cherry-pick of SHA1_to_cherrypick on top of branch-heads/2526"
At which point you could feed this to upload.py and let the CQ deal with the actual file operations, presubmits & landing.