Alternately, you could incorporate current_user_can() into the add_settings_field() callback for each admin-only option:
function somesetting_add_settings_field( $option ) {
// This is an admin-only option
if ( current_user_can( 'administrator' ) {
// If current user is admin,
// output the form field
} else {
// Otherwise, output a message,
// or display a static value of the option,
// etc.
}
}
Using this method, you shouldn't have to mess with your actual settings page markup at all.
If your sanitization callback is written properly, such that you check for data to be set, and array_merge() validated/sanitized values with existing option values, you shouldn't have to worry about any admin-only settings being deleted or improperly overwritten.