How long has the engine been in there? GM has 2 bulletins regarding this issue. Clogged fuel injectors, and dirty valves. These engines are direct injected, and when I say the valves get dirty, it's no joke. For the valves, GM recommends using a special tool to spray GM top engine cleaner through the intake to get the valves clean. It works, I can attest to that. However sometimes it requires as much as 2 runs. You do need a special tool to atomize the fluid into the intake. Some guys at the shop like to run it through a vacuum hose but I've found that the atomizer works really well. I've never pulled the intake off to examine the valves after just sucking up the cleaner juice through the vacuum port so I can't comment on how well it works. But I can say the atomizer gets rid of all the big goopy chunks that cause the valves to stick.
For the fuel injectors they run a cocktail of Fuel System Treatment Plus, GM top engine cleaner and some gas through the fuel rail with the pump shut off to clean the injectors.
GM also recommends running only top tier gas, as well as running a bottle of Fuel System Treatment Plus through your gas tank every oil change.
If these don't fix it, and you don't find the obvious vacuum leak then you guys might need to have a shop look at it as it's most likely an electrical issue. Could be a variety of things if it's electrical. Could be a bad terminal somewhere, wire, or even an injector with high resistance. If you guys ever do go to a shop I'd see if you can get the shop foreman or one of the experienced guys to look at it, vs a rookie because that rookie will eat up the diag time you pay for and come up with nothing.
Sometimes the ECUs throw P0300 with no specific cylinders, but with a scan tool you can that one cylinder specifically missfires nonstop and that would normally aid you, but I'm going to assume that you guys don't have a GM scantool/software. So maybe try pulling the plugs and also examining the pistons to see if you can see anything different about a specific chamber that could be the root cause of the code.
Edit: I can't get too specific with procedures and what not, as all the service information is copy righted and we pretty much agree to not making the information directly available to the public. But hopefully I've pointed you in the right direction.