Prevent reentrancy from changing the delegate list

Fixes #651 

@jlaanstra Do you think we should try to reduce allocations (i.e. some kind of Array.Copy to a preallocated array) instead of just calling ToArray here? Or should we not care?