I think I'll autosave whenever the player changes areas.
I should be able to do this asynchronously and even let the player continue moving while the file is being written, it should be very fast because there isn't much data to save.
In the case where a player repeatedly switches areas possibly causing file lock issues I will just ignore the later saves because it doesn't matter anyway.
I have to be sure the player is never able to change areas after "getting stuck" to avoid softlocks, this may constrain level design slightly but I'm willing to make that sacrifice.