Ok, I've read through post quickly so may have missed other suggestions. But you and I pretty much brew the same and I'm getting 70% constantly for a regular 5kg grist brew for 23L post boil (it varies a little depending on adjunct use, 75% or more if I use say 20% flaked maize or rice, 65% if I'm using 50% wheat...). I started with 65% hit and miss a little and then changed a few things.
Here's what I do different to you (I think):
I use 5.2 ph stabilizer. I use Sydney water. Looked at the water report for Ryde which services Nth Beaches and it was reasonably soft. Seems to work for me, not sure if its the answer though.
I use a colander over my element and mash in about 3L of water to 1kg of grain. So an average 5kg brew would be 15L. Mashout to 75.6c or so. Pull the bag up on the pulley and squeeze.
I've got a dirt strainer bucket from bunnings which I use to sparge in. Has worked ok so far. It has two parts, the bucket and the strainer. I take off the strainer, put the bag in the bucket and open it up so the bag is over the sides, pour about 8L of hot tap water over the grain. Let it mingle for a min then lift the bag, put the strainer back on the bucket quickly and sit the bag on it to drain. Give it a squeeze. Tip the liquid into the urn. Check the level and work out how much is left to get up to pre-boil volume. Then repeat sparge process but only pour enough hot tap water to reach pre-boil. Squeeze etc.
Other than that, the only thing is maybe its too much grain for the volume? Sounds funny, but I lose efficiency when I step up to a 6kg brew which I put down to an ineffective sparge on my part with BIAB.