I do not know what you mean by a "parallel virus based reproduction system", can you explain that? Viruses are also very expensive and difficult to spread without using a lot of energy. I remember making one and it killing my own bots off very quickly before it even spread.
I use poison mostly as defense as it is easy to control and can allow you to do many things to the other bot, for example, you can get their bot to fire energy at you while you have a chance to react. It can also be used to blind them or make them turn away(which isn't useful in all circumstances because some bots have eyes all the way around them). One limitation of the poison is that it degrades, which means that you need to work out a good way to create it while being attacked. Shell and slime are expensive and, to be honest, I hardly use them but I am sure that they are a good defense when used well. Slime also degrades and only protects from viruses, I think. Venom is an offense, by the way, it is just a bot controlled poison, being able to choose when to fire it, instead of it being a "reflex". It does not degrade like poison either.
To be honest I would go with poison as it can do so many more things than the others, however, you will need to have some sort of "detection" system to tell when it is being hit.