SPARK-1667 re-fetch fails occasionally

I think, when an Executor which has block(s) to be fetched is lost, fetch from the Executor will be fail and re-fetch from another Executor will occur.
When an Executor process is dead, re-fetch will be done successfully, but an Executor process is alive but can't read its own block(s), re-fetch wouldn't occur.
I think the behavior is not expected and tried to modify.

I pull-request my first modification and how does this look?