I read on the news that boring tunnels is very slow, but what about 'multi-threading'.
Here is a concept to consider. Who cares how slow something is, if it is not purely linear. In programming this is called threading. In life, multitasking. So a tunnel being built in 40 places or 400 places with average equipment may go faster than one really fast machine boring by itself.
So what you do is design a boring machine that can move quickly creating a very narrow tunnel. That shouldn't be too hard, hopefully. If you can move your larger machines thru smaller tunnels and assemble them you can put a new one every so often distant-wise and then all can dig at the same time.
Then you build up mini-tunnels for moving rock and dirt/rock through, so it can be taken up in relatively few locations. Assummed here is that less tunnels going up/down is better.
Now your problem is how to send hardcore digging equipment through small tunnels.
Maybe this image here shows what I'm thinking. Every 'E' is bigger space where equipment is working. This process might work better in many stages of tunnel sizes.
Well, that's my solution. Ok, enough with my random ideas.