To prevent PVP, you'd want to give weakness to players, as this is the most effective method, because, if done correctly, it won't actually make a player go red.

Command:

/effect @a[r=20] weakness 2 127

The 2 seconds is to make sure a player loses their weakness when they step out the safe zone. You might be able to lower this to 1 second.

To teleport players in a radius:

/tp @a[r=20,team=!Red] X Y Z

This command assumes that players which must not be teleported are on the scoreboard team Red.

To prevent combat between the same team:

/scoreboard teams option Red friendlyfire false

This can be used for all the teams by replacing Red with the other team's name.

Remember, you will need to setup scoreboard teams if you haven't already

More info: http://minecraft.gamepedia.com/Scoreboard

Also, check out http://minecraft.gamepedia.com/Commands#Target_selector_variables for information regarding selecting players in a certain X1 Y1 Z1 to X2 Y2 Z2 area, if using a radius is too inaccurate for you.

To give two emeralds to a player, check out this question: Can you use /testfor to detect the death of a player?

The one thing you'd need to change is change

/testfor @a[score_hasDied_min=1]

to

/give @a[score_hasDied_min=1] emerald 2

(untested, I will test in a couple hours)