cgminer + miner.php should be enough for most use cases.
Use OpenVPN to make all the rigs connectable if they are spread over multiple sites.
You can either define all the rigs manually in myminer.php, or use the multicasting feature of the API if all rigs share the same broadcast domain.
To centralize pool management, create a cgminer loop script that fetches pools.conf from a webserver, like this:
#!/bin/sh
cd
while true; do
wget http://server.domain/pools.conf -O pools.conf.new -t 1 -T 1
[ -s pools.conf.new ] && mv pools.conf.new pools.conf || rm pools.conf.new
cgminer -c cgminer.conf -c pools.conf
sleep 1
done
Enable quitting through the API, using api-groups or allowing all-around write access. When you want to change pool configuration, edit pools.conf on your webserver and issue the quit command to all rigs with another script, like this:
#!/bin/bash
shopt -s nocasematch
if [ -n "$*" ]; then rigs=$*; else rigs="rig1 rig2 rig3"; fi
for rig in $rigs
do nc -w1 $rig 4028 <<< "quit|" >/dev/null
done
With these, you are able to view the status of all rigs from one webpage, and change pool configurations by editing a single text file and running a script afterwards.
There have been websites that allow miners to resell their hashrate. The first, GPUMAX, was run by pirateat40 and was decommissioned shortly after his ponzi defaulted. The second, hashpower.com, just wasn't very successful. There were not enough people wanting to buy hashrate at the listed rates, and without buyers, sellers were not profiting either. Likely the site just dwindled into non-existence this year, it doesn't seem to exist anymore.
CEX.io only sells hashrate from their partners. Perhaps one could become their partner with 20-50TH. That would probably require some kind of formal contract between CEX.io and the large miner. It's definitely not a case of just creating workers/accounts and selling them, CEX.io needs to have some sort of control and stability guarantee on the GHS.