Hope this helps someone as I wasted so much time trying to get to the root cause of this.
Upgraded to Catalina (which is horrendous by the way) and needed to revert back to Mojave due to instability and also the fact that a couple of our companies apps have 32 bit components. Reverted back which was painful enough. System worked OK for a couple of days then randomly started freezing and restarting.
Went through all the normal things like diagnostics, SMC and PRAM reset etc etc etc. All of this did nothing and made no difference.
I had no issues at all with the laptop before this saga, I can only assume that with the update to Catalina it flashes it with newer firmware which has an issue with this 2016 model or something.
Checked the temperatures with HW Monitor and CPU temperatures seemed abnormal to me (I don't know or care what they are supposed to run at its just not normal IMO).
I used Macs Fan Control to set the custom level based on CPU core 2 to the following: sensor based value of 36deg C starting point, with a maximum temp of 66deg C.
This instantly fixed all the issues and it runs better than ever! No crashes, no lagging, no restarting.
Pretty long winded but just wanted to help any of you before you go into an Apple store and risk having to fork out $$$ for logic boards or controllers etc. Hope this helps peeps!