The only approach that has worked for me to avoid such large re-renders is to keep the state “outside” the component tree. Then, access that state only in the components that need it. Now only the components that actually use the state re-render.
I have used RxJS for this. Jotai should also work well.