The ideal solution to this problem is to use some other search algorithm like Theta* instead of A*. Unfortunately it would take a lot of work to support that (mostly because of trying to keep compatibility).
Nice that you managed to get good results using a delaunay triangulation. Recast cannot use this directly unfortunately because it has to handle overlapping surfaces (think multiple floors in a building), so what recast does is to split it up into smaller regions that do not overlap.
Creating a bunch of inner points in the navmesh also has the downside of reducing the performance, but I suppose that trade-off can be worth it.
I'm sorry that I don't have a good solution to offer you for this :/.