There are several solutions, although they may not do what you want.
You can have one STB off and one on, when you want to control the "off" STB, turn it on and the other will turn off - you only need one remote to control both. This doesn't work if you want both on at the same time, as the STBs use the same IR frequency. (Also may not work with Motorola or other STBs for those reading this from other service providers)
You could cover the IR sensor on one STB then uncover it when needed.
You may be able to put an "interference cover" on the STBs, far enough apart so that the remote has to be pointed directly at it for it to work.
You can get a programmable remote that uses RF, which would send the signals to the desired STB, as indicated in the post below: Some providers have RF remotes for use with certain STBs, so you could utilize the paired RF on one (if applicable) and IR on the other.
You can get an "IR extender" kit or "IR Repeater" kit and use the emitters to cover the IR "eye" on the STBs. These kits are typically available for around $25 or less on the web.
Here's the "IR Blocker" that I created for my SA8300HD. I used a piece of sheet metal I had and covered the front of the "Blocker" with an appropriately cropped picture of the SA8300HD. If I need to block the signal to the 9865, I can temporarily move it down, but usually I just turn one box off and the other on for the few times I need to access the 8300HD.
Sometimes there are apps that you can use on your phone to control a STB. This may allow for separate control.
Sometimes you may be able to use HDMI-CEC functionality to control the STB "through" the TV.
Edit: For programming the guide you can use the app or web interface to access the guide, etc for a particular PVR - only works with PVRs.
Web/App Scheduling (Anyplace Home Edition) Please read post 1. - Canadian TV, Computing and Home Theatre Forums