I'd like to clarify a few things to help contextualize why the approach I described in the OP works for my table.
So one of the things that I like to implement is degrees of success/failure. If the failure is only by a couple, or closer to a roll of ten, then yea, a player may just get a "You don't really get any useful information." But if the failure is spectacular, then yes, I think it is warranted to get misinformation.
For my table, misinformation is not an issue. The way I run my games, and with the things my players enjoy, misinformation can serve a couple of purposes. First, it encourages more engagement with the setting and NPCs. If there is the possibility that you are getting misinformation (whether wrong or intentionally misleading), it encourages players to seek out multiple sources to better understand what is more or less likely. This leads to more opportunities for role play and problem-solving.
Another place this helps is with intra-party role play. If two players get differing accounts, that encourages the players to discuss which might be more likely. By keeping the mystery as to which is more likely (by hiding whether a player rolled very high or very low), it can prevent metagaming and encourage a deeper in-character discussion. Not that I am opposed to metagaming, but I think it's more interesting if you are role playing a perspective that you actually believe as a player, rather than sensing is likely wrong but finding a way to do it because it makes sense for the character. In my experience, this has encouraged engagement.
Another aspect of this approach is that it aligns with my personal style as a DM in setting scenes. People looking at the same things can create different understandings, with different degrees of success. Ptolemy and Copernicus both looked at the motion of the stars and came to very different conclusions with high degrees of confidence, but one was right and the other wrong. To me, this kind of interaction should be possible in-game as well.
Secretly rolling a d4 doesn't seem any better than secretly rolling the PC's check or secretly choosing a DC.
DCs are set prior to the roll and kept secret. And we use roll20. So if I want to roll a secret check, I have to click/make sure I'm in whisper mode, find and open the player's character sheet, find the relevant skill, roll it, and hope that I actually had whisper mode on and didn't reveal the roll to the player. With my version, I have the DC, I call for the roll, and secretly make a d4 roll (which I may use real dice, but I prefer to whisper a d4 roll to myself). It's fewer clicks and less looking around than the other way. And mentally, it's fairly easy for me to invert the axis of the dice and modifiers.
This is a bit like what I was thinking. Sure the player is the one rolling the die, but the want behind it is useless. The DM could roll the d4 in the open, but then the players know the success. Otherwise the roll could be assumed to be fudged anyways for the DM outcome.
For my table, this is where trust among players comes in. I play at a table where I have worked very hard to build trust that I am not fudging rolls. I don't like fudging rolls, because that is our group's social contract. This may not work at tables with a different social contract or less trust. But for our table, it works.
Can't you just roll a real dice off camera?
Yes, but then what's the point of using the VTT? Space on my computer desk is already at a premium. Plus, I would still have to ask for the player's modifier, and the player misses out on a chance to roll themselves.