With this proposal, you're now in a situation where every reader of the file needs to participate in the crash recovery, rather than having the writer ensure that the file is written correctly.
Also, readers would need to differentiate between the case of "foo~" existing because the system crashed and "foo~" existing because some other process is in the process of replacing "foo" and waiting on the fsync.