Well I'm necroing a half-week-old conversation, but on the off chance that someone bothers reading it anyway, I would like to posit that this is all absolutely irrelevant:
1) As far as I know, a work entering the public domain has no direct requirement for your specific copy to be suddenly unlocked. I'm pretty sure it doesn't even require the works' owner to release it at all. Only that they can't sue you for infringement if you do manage to copy it. That's probably an unpopular viewpoint around here, but I'm reasonably sure that its a correct one.
2) Even if we decide to force companies to release and/or unlock their works, we still have the issue that copyright is currently nearly a century long and they're still pushing to extend terms further. It doesn't really matter what happens when software enters the public domain if no software is ever given the opportunity to do so.
3) And finally, with software specifically, there's the question of what exactly constitutes "the work": The binaries or the source? Specifically, if we decide that the source constitutes the work (and assuming we're discussing closed-source software obviously,) then the entire question is once again moot since its never released publicly and thus will never have the opportunity to enter the public domain.
As for your last phrase: DRM schemes and walled garden store fronts are most definitely not the same thing. Steam doesn't do anything toward ending general-purpose computing. Nor does DVD or Bluray DRM. And conversely, there's nothing in the concept of a walled garden store that requires you to lock your program behind DRM (whether any particular store front does or not is another question.)
Certainly the producers of media, including software, are doing their damnedest to try and claw back control using both technologies, but beyond the coincidence of them both existing and being used for similar goals at the same point in history there's little connecting the two from a technology standpoint. In other words, its the culture rather than the code that's the problem here.