Is that approach a common one in better mutation tools? I've never had an opportunity to use one, unfortunately, I've only used ones that worked by modifying source code over and over. It seems much more effective than repeated compilation.
It depends very much on the language, e.g. common Java tools work with byte code at runtime (so no 'recompilation' is necessary), and tools for scripting languages have no option but to generate source.
Actually the approach has a weakness: The code may have hidden state that could change test results between runs. As mutations need to run the code many times, this can skew the results.
Note that this was the first thing that came to mind, after some discussion with other Rustaceans I think I found a way to allow for more mutations with only little overhead.