Oscillations are usually cause by either PIDs that are not optimal, or indirectly by vibrations (too high P-term will be amplifying your vibrations). At the bottom I am attaching movie about PIDs tuning.
Assuming you have low vibration build, tuned PIDs properly your optimal PIDs for your build are tuned to certain battery level and hover throttle. For some copters the range in which PIDs are optimal is very narrow so once you are outside of that range (very low or very high throttle) copter oscillates.
This could perhaps be fixed with some adaptive PID controller (don't know any firmware doing that), Betaflight has battery compensation, and LP has throttle PID scaling (TPS). You just need to enable TPS if you have problem of low and high throttle oscillations..
Changing ESCs most likely wouldn't solve your oscillation problem, unless you change something by chance additionally, it would (like happens to many people) lead you into thinking that ESCs actually fixed something, but that's independent and not directly related and would be wrong conclusion.
About Dshot. As much as I bet you will
not notice difference between OneShot and Dshot (I am still flying OneShot on most older builds), I am sure you will notice the difference between older BLHeli and newer BLHeli_S firmware for ESCs. Newer ESCs that are Dshot capable also happen to run rewritten BLHeli_S!
Nice thing is that most of these ESCs are based on EFM8BB2 chip (busy bee 2) and use hardware PWM (not bit banging like older ESCs) also PWM is synchronous to master clock this means motors run consideribly smoother and more quite. You will definitly notice that with BLHeli_S firmware, but this is underelated to DShot protocol itself
P.S ESC protocol is auto-detected so DShot esc should work with OneShot.Here movie