I hope I can comment on @Bis,, @eth and @TJEvrtGuy78's answer, then I don't have to make my voice heard through an answer since I don't have that much reputation(I don't even have enough reputation to up-vote an answer)
I am also setting up a private network to run smart-contract where all the miners belong to me).
I don't think hacking an Ethereum client like EthereumJ is a good idea, because that will break the compatibility. And using a pyethereum tester is also not a good option, because that will lose the scalability.
After all, a private network should not be just acting like a test network, it can also be a production network.
As far as I search for now, my private Ethereum network is mining a block per 2 seconds. Considering the decay of reward, a network can run at least 3 years with reward. And even if the reward becomes zero in the future, we can also gather the Ether to one account, so that the miner and transaction originator is using same account, every operation will go into a zero-sum game.
The key point of the answer to this question should be sharing one account across everywhere in the network. I don't think the gas limit is necessary unless the gas number of target contract is really high. And according to my experiment, prefunding is also not necessary, one hour warm-up will produce enough coins.
After all, I am just summarizing all your answers with my experience.