Field not rewritten even though "Hide rewriting if empty" not selected
Although I don't understand why Drupal doesn't behave as I posit in my original question, I have found a solution. It is to use [first_name] as the No results text. If the last name is empty, the no results text is used, and the first name is displayed. If the last name is non-empty, the rewrite results are used, and the first and last names are displayed. Kind of roundabout, but it works.