OK, I'm back from Hawaii and I have read this whole post (I made a list of all people who made fun of me :devil: )
Specialization: It is completely explained by two things.
One is that DNA defines function. The more potential functions you want to have, the more DNA you need. You cannot acquire functions during your lifetime, only through mutations.
Two is that almost no organism is using all its potential functions. It uses those that are necessary in environment it lives in. Potential functions get better and better every time you use them. If you don't use a function, the DNA for that function is turned off at first and later it is labeled as not-used and is turned off more and more. Kind of like light in your house. First you can turn off the light with the switch, then after a while you can disconnect entire house and then later you can shut down the power plant. If all of a sudden you want to turn the light on - you have to go back all the way to power plant, turn it on, connect your house and flip the switch. On the other side, if you don't need light now, but want to have the ability to quickly turn it on later, then you have to keep the whole system going, even though you don't actively use it.
Now back to DBs: Genes define function in DB, so here we are set. But turning genes on and off is very easy in DBs and right now it does not matter how often you used that gene. What we need is a system that would allow genes to get more efficient when they are used often at the cost of getting less efficient in functions that are not used. The system should also allow some genes to be not used, but kept reaady to go (at some cost). If we do that, we have specialization. It is really that easy and there is no need to come up with more complicated systems.