You can just pipe the first output to another grep and use it as another "filter" like:
tail -f /var/log/fail2ban.log -f /var/log/ufw.log | grep "Ban\|BLOCK\|ALLOW" | grep -v "UDP\|ICMP"
Note that grep can stack different strings even regex when you use double quotes separating it by a pipe "|" but you should scape the character with "\" to not get weird things.
The -v parameter literally says in man
-v, --invert-match
Invert the sense of matching, to select non-matching lines.
So it seems to just invert the match you determine, so you cannot parametrize it.
Like in you see in the synopsis you can give 3 types of parameters.
Options, a pattern and a file.
Options are a whole always start with - or -- and you can put a bunch of them.
You can determine a single pattern or a specific type of pattern with -e or -f or withouth anithing.
And always the last should be the file/s or directory (Directories needs -R parameter to recurse them or you can just put directory/*). if not specified it will try to read the stdin like you are doing.
SYNOPSIS
grep [OPTION...] PATTERNS [FILE...]
grep [OPTION...] -e PATTERNS ... [FILE...]
grep [OPTION...] -f PATTERN_FILE ... [FILE...]
Anyway this is already answered in a more basic way