Maybe you could use a tf_logic_player_destruction to have mock 'currency' counters on each player, setting the points to win really high or just making it unwinnable some how else, and either:
- Using each func_capturezone's OnCapTeam1_PD type to give the whole team some buff, or maybe hit the !activator with a specific input that triggers condition-things, like FireUser1 - acquired on spawn/no targetname on the player.
- Using "OnRedScoreChanged <float> Send when score changes, and is a value representing total progress from [0..1]." detect how far along a team's score is and give them specific team buffs..
It wouldn't be 'mvm upgrades', but it could still give that feeling of acquiring upgrades by spending 'points'!