Ok, so much for elegant-- hammer #1: try d.rast.edit on a copy of the data to try to generate a mask hammer #2: v.digit, using the original data as an underlying cell map, generate a polygon around the incorrect areas, build mask from that vector region