After playing around with GRASS, I think I have found my workflow. I can now create contact boundaries, create centroids within them in a separate layer (boundaries + centroids = areas/polygons), and generate appropriately labeled polygons automatically.
The trick was (1) understanding how to attribute using the QGIS interface to GRASS, and (2) realizing that the Split tool needs a double click to create a vertex that can snap.
So perhaps my days requiring Arc are numbered. Now I just need to get QGIS Trunk to compile for its awesome new symbology features.
Oh, if you haven't tried using GRASS since before QGIS 1.7, you might want to try. Its interface is a bit more intuitive and it is way less crash prone.