Automatically adding paid membership products based on field values with Ubercart and Content Profile
I would look into Rules (may require some patches and the Ubercart Rules module, as I don't know if it can add products to the cart by default).

That said, a Google search (which I'm sure you've also done) doesn't hint at much. If you have time, I would suggest doing it the way you're planning (validate and submit hooks and uc_add_item). It will work well. Then contribute back what you've done either to an existing, similar module or as a new uc_ module.

Before doing so, you could ask in #drupal or, more specifically, #drupal-ubercart on IRC.