I wrote a batch "unfreezer" for viewport frozen layers years ago in VBA. I don't know whether the same rules would apply, but the only way I could find to affect the state of layers frozen/thawed by viewport was by directly modifying the viewports relevant XData. I'd have to dig out the code to get the specifics, but for the code to work I had to copy the original viewport, delete it from the drawing, delete the appropriate XData records from the copy, then re-create it.
Whether you'd have to be so clunky in .NET (or even VBA - all I know is it worked!), I wouldn't know, but the lack of any viewport XData modification stands out to me as a possible issue.