I'm not sure why they have to be the same but I am fairly certain they have to be, and it's how I've always done it, and it's how I've always seen it in all of the examples like:
http://httpd.apache.org/docs-2.0/vhosts/examples.html
Also, it matches what you have for "NameVirtualHost" right? And you did restart apache after each change right? You might try "*" for the NameVirutualHost and in each of the VirtualHost definition names like in the link example above. Personally I have an entry in my /etc/hosts that doesn't match any web site that might look like this:
192.168.1.1 myserver
and then I use the same name in my NameVirtualHost and my VirtualHost:
NameVirtualHost myserver
<VirtualHost myserver>
ServerName voidmain.is-a-geek.net
DocumentRoot /var/www/voidmain
...
...
...
</VirtualHost>
And here are a couple of examples of what I have used (or are using) on the void server:
http://voidmain.is-a-geek.net/files/configs/httpd.conf
http://voidmain.is-a-geek.net/files/configs/httpd.conf2
EDIT: Oh, and most importantly, your Apache server must be able to resolve the names you are using in your "ServerName" directives. Do an "nslookup
www.addicted2tech.com", and "nslookup
www.triplecandb.com".