Refactor per-player shrouds.

I wanted to fix the shellmap-shroud bug, but was pretty horrified when I saw the state of the shroud code. This simplifies things and (hopefully) doesn't regress anything.