Let me describe the situation: there's an old piece of software (a game) with source code publically available. Source code was (officially, legally) released with following non-free license:
The source code to GAME NAME is copyright (c) YEAR-YEAR NAME and is provided as-is with no warranty for its suitability for use. You may not use this source code in full or in part for commercial purposes. Any use must include a clearly visible credit to NAME as the creators and owners, and reiteration of this license.
Since the initial release, several people/teams updated it, modified (substantially, e.g. by porting to SDL2) - but every fork eventually fizzled out and died (it's playable on modern Linux systems, but I haven't tried it myself yet).
I am thinking about picking up the fork and maintaining it, but I don't feel like working on non-free software (it would be pointless, IMHO). I was planning to dual-license all of my future changes under original license and GPLv3, and clearly indicate this in Git repo - e.g. by marking every change that modifies code (so every change sans formatting) as GPL-compatible. This way I was planning to gradually liberate the code, so eventually, when all lines would be covered by GPL, I could release it with GPLv3 being primary license. Maybe some older maintainers would agree to re-license their changes on GPL as well (that would speed up the process).
Is it legally defensible? Has there been any precedence for liberating source code this way? Is there some better license than GPLv3 to handle such a transition? (LGPL maybe?)
 Clarifying question: what if the gradual rewrite was not line-by-line (commit-by-commit), but instead module-by-module (maybe even using completely different language linking to the original source code compiled as shared object). LGPL seems to be ideally suited for this purpose.