Digital attenuation is less about loss and more about noise floor. A 16 bit stream can represent a dynamic range of 96 db, hence it has a noise floor of -96 db. If you would keep the stream at 16 bit and lower the amplitude of the signal, with each 1db of lowering you will get 1db closer to the noise floor, until at -96db your signal will be lost in the noise floor. Of course, you will hear a rise in noise way before that.
But digital volume control doesn't usually work like that. If you take a 16 bit file and stream it over a 24 bit stream, which has 120 db SNR, you can potentially lower the amplitude of the 16 bit audio by 24 db before any loss of SNR will take place. And it gets better as you improve your bit depth. At 32 bit you have potentially 192 db of SNR, so you can almost lower the 16 bit audio by its full 96 db SNR and just barely scratch the noise floor of the 32 bit stream.
You need also to consider two other factors. First is the practical SNR of your entire system, and of your own hearing. CDs were made with 16 bit because that’s way more than you realistically need to play any sort of music in any setting other than maybe an anechoic chamber. Since your base noise floor in whatever room you're are listening in is probably higher than 30 db, you don't really need even 96 db of SNR. And most systems will have less SNR, where amplifiers and mostly speakers are the limiting factor.
Dacs are usually the least limiting piece in the chain, and well-engineered dacs can easily have SNR of 100 db and more. And that’s the second factor to consider – you can only realistically use the bit depth whose SNR is lower than the SNR of your dac (called linearity sometimes). Say, if your dac has 110 SNR, you can't even use the full potential of 24 bit audio, let alone 32 bit. But that is not really a problem.
Think of it like this – say you have a base noise of 30 db SPL in your listening room (which is really low). If you set up your system to play 16 bit audio such that the quietest possible bit is at 30 db SPL, that would make the loudest possible bit (0dbFS) at 126 db SPL! Which is higher than the threshold of pain for humans, and is as loud as a jackhammer close by. You'll probably never listen to music at that volume, and I doubt most speakers can play at that volume without distorting terribly.
That means that most dacs has more than enough SNR to digitally control the volume without any perceptual noise floor. If a dac has that option built in, make sure it's converting the stream to 24 bits at least. 32 bits is the professional industry standard for audio editing, so anything beyond that is completely overkill. Nothing in the world has more than 192 db SNR anyway.
You have also clever solutions like the one in the RME ADI-2-DAC that uses digital volume control. In the default mode it has more than enough SNR to control the volume seamlessly, but if you are still concerned, you can optimize its noise floor by setting the base reference level to your liking using actual analog circuitry, to get the best SNR possible. It even has a mode in which it blends together digital and analog control to automatically achieve the lowest possible noise floor. But this is a massive overkill in most cases.
So to conclude, fear not from digital volume control. If the dac is decent and you resample your stream to 24 bit at least, it will be completely transparent.
Edit: I made a mistake actually. 24 bit depth gives you SNR of 144 db, not 120 db.
Источник