In step KE,
sidH = H((sid, sid, P ∪ {my}, NPK[ ], run))
How is NPK[] determined prior to receiving NPK[p] from p?
Good catch! You're right, this is a small mistake. NPK[] is not determined yet. This should be VK[], not NPK[]...
We try to include the whole view of the peers in the hash to make sure they cannot continue if something is weird. (Even though some inputs of the hash function may not be necessary it cannot be wrong to include them in the hash.)