Why Does the Same Photo Have Two Different Dates?
creationTime and photoTakenTime are not the same thing. Using the wrong one dates your scans to last year.
Because your .json file holds two dates and they mean different things.
photoTakenTime is when the picture was taken, as Google Photos showed it, including any correction you made by hand. creationTime is when the file was uploaded to Google. For a photo taken and backed up the same day, they match and it does not matter. For a scan of a 1985 print that you uploaded in 2021, they are decades apart.
Use the wrong one and every old photo you carefully scanned lands in the year you happened to upload it. This is the single most common way a metadata fix goes wrong.
The app uses photoTakenTime, which is the one you want, including any date you corrected inside Google Photos. Your scans stay in the right decade and your uploads stay on the right day. The first 500 photos are free, so check it against a photo whose real date you know.