This kind of stuff was a big pain in the ass for me. If this is for a character controller you can use sphere sweeping so you never actually enter the geometry in the first place, which makes things a tiny bit simpler. That basically reduces the response movement calculation to two collisions at most, which is the cross product of the two contacts. If you contact more than two you can consider all the pairs and take the best solution. This worked great for me, but again it starts with a different premise which doesn't apply to you if you are entering the geometry.
The other thing is you can't just solve a double collision since you will have more than two collisions in one time step, sooner or later (probably sooner if your geometry is anything like mine). If you contact a point where several triangles meet you can have many.
I might try this in your case……. For multiple collisions find the first collision and go back to that spot. Since it's the first, you won't be contacting anything else at that point. Then do the response for that one collision. However, you still have to consider double collisions at some point. Say you are pushing up a small valley. The first plane pushes you into the other, and other pushes you back into the first. So you are at a deadlock, which is where the cross product comes in again.
So let's say you are doing a response for a single collision, and you hit another plane. You can check at the end of the movement if you are still next to the original plane that caused the response. If so, now you can use the cross product of the planes and keep going.
There are some caveats. So say you are going down your cross product and you hit yet another plane (which can be a very common case). Now you are touching 3 planes. But you can still take the 3 pairs, calculate the cross products of those and pick the best one by comparing them to your force direction with a dot product. This is really just a generalization of the double plane case.
As I said this is what I do, and it lets me go over very random geometry without locking up.