When configuring exchanges in virtualhosts.xml, only the name is picked up. The type element is ignored and the default "direct" is used. Similarly, the durable element is ignored and the default "false" is used. As such it is impossible to define anything other than a transient direct exchange within virtualhosts.xml.
When configured within the main config.xml file, the configuration is picked up and used as expected.