Rarity
On higher difficulty levels, berserks and invulns are huge gamechangers. Instead of giving them out randomly, I suggest always spawning at least 1 on every level. This makes the hugely important full heal berserk on level 2 a guarantee instead of something you really really hope will spawn on UV or N!, and makes later levels a bit less luck-based.
Spawn rate is something like:
Levels 2-5: Always has exactly 1 zerk.
Levels 6-10: Always has 1 zerk, may also have 1 invuln.
Levels 11-15: Always has 1 zerk or 1 invuln, usually has both. Rarely has 2 zerks. Very rarely has 2 invulns.
Levels 17+: Always has 1 zerk or 1 invuln, usually has both. May have 2 or more of either.
Effects
Melee in DoomRL is a bit "get berserk, slaughter everything, lose berserk, die immediately"
Berserk packs should give a tad less damage resistance, but you keep the double melee damage and gain +1 armour until the next time you walk down stairs.
If you grab a berserk pack and walk down stairs before the berserking effect ends, you do not get the +1 armour and you lose the melee damage bonus. The berserk pack must have been picked up on the level you wish to get the long term effects on.
If you berserk through the trait rather than a pack, these long term effects do not activate.
There should be a blue "berserk" status effect at the bottom of the screen when you have the double damage and +1 armour so it's a bit more obvious that you're still getting some sort of bonus from the pack.