We have not had much luck with the big reward for producing a BM in the toilet. His successes are so rare and far between that there's no chance to build on them.
So we're stepping back and doing checks every half hour for cleanliness. If he's clean, he gets a marshmallow. If he's soiled and admits it, he gets a marshmallow. If he lies, no marshmallow and he gets cleaned up. Hopefully this will encourage him to stop hiding when he's had an accident. Then we can maybe encourage him to start going to the bathroom for his accidents (just to the room, not necessarily using the toilet).
It's not great but it's still something to try. Fingers crossed we can make some progress.