There's no easy way to do this. While LR is open, it puts a filesystem lock on the file, and updates may be recorded in the SQLite write-ahead log, not the .lrcat itself (as you've discovered).
Your plugin will have to use LrTasks.execute() to run a shell script that politely asks LR to exit, waits for it to actually exit, copies the .lrcat file, then restarts LR. The shell script should be run with "nohup" on Mac and "start /min cmd /c" on Windows, to let it keep executing after its parent process LR exits. The script should use these idioms for asking LR to exit politely:
Mac: osascript -e 'tell application "Lightroom" to quit'
Windows: taskkill /im lightroom.exe /t
Then the script needs to keep checking for the LR process to disappear. All very painful to get script with complete error checking and robustness.