First things first, here's a link to Leviton's 7299 combination switch & GFCI instruction sheet. For a tamper proof it will be a T7299. The only reason I give Leviton is because I know the part number. Hubbell, GE or Cooper are just as good and make the same.
GFCI protection for both outlets.
Follow the instructions that come with the GFCI. There are leads for the switch and lugs for the GFCI and also the feedthru-protection of another receptacle.
No GFCI outlet behind the dishwasher (for easy resetting without dishwasher removal).
This is accomplished by feeding the dishwasher receptacle using the GFCI feedthru-protection lugs.
The switch only toggling the garbage disposal outlet and not the dishwasher outlet.
This is accomplished by using the leads on the combo switch & GFCI to feed the garbage disposal.
Am I going to need to run some more wire through the walls?
If there are no wires between the combo switch & GFCI then you will have to pull some romex between the two.
Should I investigate adding a GFCI breaker for that circuit?
The breaker will cost a lot more than the combo switch & GFCI. Also, if the GFCI trips then you have to go to the breaker to reset it. At least with the GFCI receptacle feeding your dishwasher receptacle, you will be closer.
What other solutions would achieve the same effect as listed above?
I think this is the way to go, so you don't have to pull your dishwasher out to reset the GFCI. The nice thing about this site is some of the people either can think out of the box or have faced this problem before.
I don't know your "switch/outlet" combination in detail, but I'd guess there might be a connection by default (ie, the switch is tied to the outlet unless you break a tab) that's getting upset by the switch being fed from the line side and the outlet being fed from the load side of the GFCI. In any case, the disposal probably ought to be connected to the load side of the GFCI.
If the switch is the same one that worked or not depending how hard it's pressed, why haven't you replaced it yet?
The ground wire should be connected to the box. The other cable should be checked for a ground wire, and that should be connected to the box if it exists. The box & grounds should be connected to the GFCI and Switch/outlet ground terminals.
If you haven't dumped the trash yet the GFCI you removed might work fine, given what you have found with the new one.
Best Answer
There's not quite enough information here to answer your question. But we can try after making a couple assumptions.
From what I gather the picture is of the outlet box and the garbage disposal plugs into the top outlet. Presumably the cable exiting at the top of this box is from the supply (or else the disposal would never run). The rest of your question implies that there is a switch box as well so I assume the cable exiting to the right leads to a 2-pole switch? You're trying to understand how to wire this switch such that the top outlet in the outlet box can be switched.
If my understanding of your question is correct then the switch is on a switch loop and the diagram you have posted does not apply. Instead wire as follows. Connect supply black to switch loop black. Re-identify the switch loop white cable as black and connect it to upper outlet hot. Leave the supply white connected to neutral outlet. With the hot tab jumper in place this will get you a switched outlet (both receptacles).
If you wish to switch only the top receptacle break the hot tab on the receptacle and connect supply black to the bottom hot side of the outlet. Use a pigtail since supply black is now feeding the switch loop and the lower receptacle.