Why not just do all your intermediate calculations with custom states? You don’t need to make database Things to hold the results of every intermediate calculation. Just hold them in memory using custom states, which are essentially page-level/in-memory variables.
And sequences of Set State are completely synchronous. If you want to see someone (me in this case) faff around with Custom States (and show how they might interact with Create/Make Changes and how plugins may or may not mess this up), see: