rather than put more work on the tempDb, you could create them a dedicated Staging Database and put this in simple mode so that log backups are not needed.
Yes that is a good idea and would probably work
If so, your approach could possibly work. But what about just eliminating the secondary update process. Figure out all the data and make it a single batch process instead of multi-pass operations?
The process is quite complex from a business perspective ie working out loyalty points expiry for various periods and tiers.
So although it may be able to be done in a single batch I guess it has been broken down into many staging tables for debugging / checking reasons.