You are correct that there's a VM -- Dalvik is the process virtual machine in Android, and that a common use case is to use Java bytecode and then convert it to Dalvik, but this is a far cry from being "trapped in a Java VM".
In fact, at even the fundamental level, the Java VM is a stack-based machine, while the Dalvik VM is a register-based machine (the merits or criticisms of doing so are beyond the scope of this post; that's a different discussion).
And if the notion of a VM is still utterly offensive, you are welcome to write portions of your Android applications in native code, such as through C or C++, although for many applications there's really no or marginal benefit to doing so.