1. Send an email to a user when they are assigned a test case (or set of test cases).
2. Have a way to reset an entire test plan so that all test cases are marked as not run.
3. Only allow users to update the status of a test case if the test case is assigned to them or it is unassigned. Could be that a permission could lift this restriction from a user.
Regarding #2 - help me understand how you are using TR. The idea behind TR is to execute a test plan and if you want to execute it again, you would copy it. That way you don't lose the history of having executed the plan.