I suppose for the speed thing you could use a combination of apponidle, GetPlayerStat(id, 'velx/y'), and that function by avarax to push players around. Would be interesting if done properly.
For the team thing, thats very possible. In OnPlayerDamage, simply check the team of the shooter and modify the Result variable accordingly.