My improved scheme includes the following:
SObject
SObjectField
SObjectRecord
SObjectRecordFieldValue
I also took the easy way out with getting the spreadsheet to be read in the way I expected by duplicating the field name row and adding two more "column header rows" to represent the
SOAPType
and whether the field is a custom external ID or not.