Now my problem is that when viewing the Gerber files, the solder mask covers the vias in addition to the rest of the pad, but I don't want the solder to flow into the vias. I've tried various things, including the "force tenting on top/bottom" setting on the vias but this also doesn't work.
Ignoring questions about it being a good thing to do or not the only semi-automated way to generate a solder mask pattern is to pour a copper polygon around the footprint vias in the PCB editor then move the polygon to the resist layer and copy and paste it into the footprint. The footprint thermal pad and vias need to be set tented.
Ewwwww...
So what happens when you Repour All Polygons? You have to redo each and every one?
A "convert to region" would lock the outline, don't think that works on polys though.
Another method would be: fully tent the pad and vias, and draw the soldermask openings manually. Use circles around the vias, and fill (with traces or regions or fill or whatever) between the circles and perimeter. An ugly hack.
Soldermask is only logical-OR, so you can't subtract a tent from an already open region, you must do some BS way like this.
Or, preferably... just leave it be, because that's usually better. I've heard tenting is bad because the vias trap gas, which gets released during soldering, causing voids. Also better to provide a path for solder to move, as mentioned above: you can even use purposely sized vias to wick excess solder away from the pad, so the device sits at the correct height for all pads.
Tim