Ensure InterruptedException is handled properly

There were a few cases where InterruptedException is caught but the
interrupted status wasn't being set, and one other place where the
exception was being rethrown so setting the interrupt flag wasn't
necessary.