I'll answer my own question:
The only necessary fix was to append log volume mount point to RequiresMountsFor in systemd-journal-flush service's unit file:
RequiresMountsFor=/var/log/journal /log
In yocto, that required patching systemd recipe to make a change in units/systemd-journal-flush.service.
After this change, new boot is correctly recognized every time, and no more unmount failures during poweroff.