Maybe require the receivers to 'pick up' the transfer by clicking a button, and allow the senders to cancel the transaction up until the pickup point. This allows some window of opportunity for the sender to recover their error after realizing that he entered the wrong information a couple of times, verified it, and then clicked to transfer before it becomes permanent.
Adding a unique hash to each user is a good, but really though, how far you go to account for user error can lead to an interesting cost/benefit analysis where much of your effort is focused on solving for the least common denominator. It's usually more efficient to treat these as one-off cases and fix what can be fixed manually and leave a warning for the user otherwise.
In this case, I think reversing the transaction requires embroiling oneself in the affairs of the transaction -- getting approval from the transfer recipient and confirming that this was transferred to his account by mistake. Otherwise, this method could be used as a 'reversal' technique for legitimate transactions. The easiest way to solve this would be to simply ask the recipient to transfer back the shares they were transferred in error (that is, if he still has them). However, since there's no messaging system between users on the site, there's no way for users to handle this on their own. With admin intervention, if the accidental recipient disagrees that this was an erroneous transfer then this would place the admin into a position as an arbiter, which he shouldn't be in, especially with no legitimate proof either way on whether it was an erroneous transfer. In such a case, I'd have to agree with leaving the transfer alone and not reversing it, since ultimately it's the user's responsibility to confirm that the recipient information is correct before they submit it.
Maybe add a disclaimer about transfers being irreversible.