This problem is something we've noticed after running multiple campaigns - we end up playing mostly a subset of classes: casters and hybrids like paladin and barbarians. The current fighter we have says he doesn't feel like he keeps up. We just had a discussion about that tonight.
Its because your DM isnt policing the adventuring 'day' (not necessarily a day).
It seems like you've identified the cause (we only ever get 1-3 encounters per long rest, and never short rest) and the natural consequence of that meta (Barbarians, Paladins and full casters everywhere, while Fighters, Warlocks and Monks suck).
The natural solution is for the rest meta to change. That decision alone will alter your game drastically.
You could just impose Gritty realism resting (overnights are Short rests, and Long rests are week long affairs back home), but that's possibly too drastic an option. Instead, as DM of this game I would
police the adventuring day and do the following:
- No automatic long rests at the end of the session (should you be doing that).
- Players are to record resource use (slots, rages, HP loss, HD used etc) on a sheet of paper (see below), and hand those sheets over to the DM at the end of the session (for occasional auditing, or simply just the fear of such an audit).
- -You get a long rest after 8 hours of uninterrupted rest, and when the DM decides it's an appropriate time for such a rest to replenish resources. Not all Long rests are equal. As a general rule, players can expect long rests not to do anything until they've dealt with around 6 encounters since their last one.
- Short rests are now only a few minutes long (quick map check, swig of water, binding wounds, taking a knee etc) but limited to 2 per long rest (max). Take them whenever you want outside of combat.
That pretty much does it.
----------------------------------
For resource sheets they look something like a sheet of paper with every single long rest/ short rest resource on it, separated by long and short rest (and HP and HD) with check boxes next to them.
For a Paladin 3/ Sorcerer 3/ Hexblade 3/ BM Fighter 3 (to use a complex example), such a sheet would look something like this:
Health:
Current HP: XXX of YYY
HD used (D6): OOO
HD used (D8): OOO
HD used (D10): OOOOOO
Long rest:
LoH: OOOOO OOOOO OOOOO
Slots (1st): OOOO
Slots (2nd): OOO
SP: OOO
Short rest: OO
Channel divinity: O
Warlock slots (2nd): OO
Hexblades curse: O
Action surge: O
Second Wind (d10+3): O
Superiority dice: OOOO
-------------------------------------------------------
As Players use such resources, the Player fills in one of the 'O's next to that ability in pencil. When the Player takes a short rest they fill in a Short Rest 'O' and erase all the filled in 'O's underneath it.
A long rest clears all the boxes (other than HD) and restores HP to full.