How to sum two fields
Ok, I've got a solution that will work for me. This d.o forum comment was very helpful.

Instead of changing the $form['submit'] array, prepend the callback to the submit callback stack! Like so:

array_unshift($form['actions']['submit']['#submit'], 'MODULE_my_custom_submit_handler');

Note that the code in the comment from d.o is a bit off, you don't need to assign the unshift'ed array, you just run array_unshift on the array itself.

Once that's added in your hook_form_alter you can do WHATEVER processing magic you want with form_set_value(). Cool! Thanks all.

EDIT: here's what the callback looks like. Also note that for some reason someone took out my fields in my original question. But these field names would make more sense if someone didn't do that.

function MODULE_my_custom_submit_handler($form, &amp;$form_state) {
  $lang = $form['language']['#value'];

  $a = $form_state['values']['field_fruit_collection'][$lang][0]['field_watermelon']['und'][0]['value'];
  $b = $form_state['values']['field_fruit_collection'][$lang][0]['field_apples']['und'][0]['value'];

  $sum = $a + $b;
  form_set_value($form['field_total_fruit'][$lang][0]['value'], $sum, $form_state);
}