We had similar issue for a long time.
Firstly it started with randomly popping no package.xml found error + unknown exceptions time to time.
What helped with no package.xml -> creating classes, lightning comopnents and triggers etc always with force:apex:class:create or force:lightning:component:create or relevant. There is small diffrence in meta-xml definition which should not make a diffrence at all but it magically helped.
NExt we had problem with Unknown Exceptions. And a lot of them (record was 16 tries before succesfull push)
First of all: it even doesnt start to deploy stuff when you get this exception -> deploy status on scratch org will be empty.
Secondly: After some time I observed that amount of UNKNOWN EXCEPTION was rising during business hours in our region. Next clue was that our server instance had some PERFORMANCE DEGRADATION periods around when our issues occured (but not exactly when we tried to push something)
After that my assumption was that Salesforce servers are just rejecting our push request when payload was to high.
We contacted Salesforce support desciribing our issue. After two weeks of investigation and without any direct answer everything just started to work like a charm. No unknown exception no package.xml just boom we're back in game.
Support didn't respond till that moment so we just closed the case.
My advice here is:
Raise a case to a support with as specific description as you can provide and escalate as soon as you think it would be wise. Unfortunately I think that "first line of defence" of support wont help much.
I'm sorry that's not direct answer but I think it's easier to read than a comment.