If the #14 or #12 wire is a branch going to specific loads, then it is "safe" with respect to that load. It won't overload that wiring regardless of the breaker capacity use (or even if the breaker is bypassed entirely). However, this is unsafe in the context of changes in usage. The electrical code focuses on safety and rightly prohibits this. The circuit breaker is required to be sized to protect all wiring in the branch circuit it feeds to (and the receptacles, too). This is because someone could overload the circuit (for example plugging in a 12 amp appliance in one outlet and another 12 amp appliance in another outlet on the same circuit, which should trip a 20 amp breaker and would not trip a 30 amp breaker).
In USA, all 15 amp receptacles are actually rated at 20 amps (just not configured to accept a 20 amp plug). So if you have 20 amp wire (usually #12 if the special cases requiring derating do not come into play), you can use a 20 amp breaker (one more exception in the code is if the branch circuit has a single dedicated outlet, it must be protected at the outlet designated amperage).
Since the normal type of outlets don't have a 30 amp capacity, you can't use a 30 amp breaker on them even if you have 30 amp wiring (usually #10), and meet the electrical code. The receptacles can overheat, too. You may need to split circuits if this branch is pulling too much current.
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.
Best Answer
If there is an upstream GFCI device protecting that outlet it is fine.
See if any other outlet in the kitchen has a test and reset button, when you test it and it trips does the outlet by the sink also lose power? If so then the outlet is protected by the GFCI.
The GFCI device can also be the breaker in the panel feeding the circuit. So check there as well.
If you find that they are protected by GFCI take your label printer and print out a "GFCI protected" label to put on the outlet.