If you call endSheet:immediately after the sheet is shown, this will give the behavior I'm looking for.
[NSApp beginSheet:self._loginController.window
modalForWindow:self.window
modalDelegate:nil
didEndSelector:nil
contextInfo:NULL];
[NSApp endSheet:self._loginController.window];
This does not cancel the sheet, and when you are done, you can hide the sheet with [window orderOut:nil];.