Alter field settings using hook?
With respect to your original post, I ran into this exact issue here in drupalsixlandia and resolved it with a dull ax inside of views.  By exact meaning I wanted to have a select list of bands created by a user presented to them when they wanted to add an album, but when an admin went in to add/edit things, s/he should see all of the bands on the system.

So, I created a view and used this view to populate the band Node Reference field in the album type in CCK.  

I called it my_band and it filters on published bands and returns the Node Title of the band as the field. It has one argument, or in D7 a contextual filter, User Uid and in action to take if argument not present I provide a default argument via PHP code:

global $user;

if (in_array('super user', array_values($user-&gt;roles))) {
  return -1;
} else {
  return $user-&gt;uid;
}


Then in the Validation of that argument, I again use PHP:

if ($argument == -1) {
  return FALSE;
} else {
  return TRUE;
}


with display all values if validation fails.

So, now what happens (here at least) is if a casual user wants to create an album, s/he is presented with a list of only the bands s/he has created.  But, if any user with the super user role wants to create or edit an album, the validation is forced to fail, and the argument is ignored and all bands in the system are returned.

Perhaps with some D7ing of the code above this might work for you.