This is almost exactly what we'll do. The biggest thing unaccounted for is how to handle users who either prefer (electricity, etc) a specific algorithm (aka, add +25% weight to x13), and users who have cards that switch at rates outside our standard (eg, having a card that does X13 at 6x instead of our calculated 3.4x).
Doing the first part (algo switching) shouldn't be too terribly difficult, some tech additions (turning on/off ports), and some minor switcher logic (choosing which port to open).
Doing the second part (per user config of weights) is a lot tougher, and will likely get pushed back for a while (no one else is doing that yet either, so its not like we're playing catchup)

Nicehash even if it's not really a pool like waffle mining coin but rent hash is already doing that, you can define f= and c= as your factor and cost