The "real" kernel source usually lives at /usr/src/linux/include - this contains the subdirectories (linux and asm) you mentioned. Standard practice is to have /usr/include/linux and /usr/include/asm symlinks that point to those subdirectories as well. So either /usr/src/linux/include or /usr/include should work if the headers are actually installed. If you're using a distribution, there's usually a "kernel include" or "kernel header" package that you can install instead of the full source in order to save space. It's also possible that you have the full source already, but it's living in something like /usr/src/linux-2.4.16 without a symlink from linux to linux-2.4.16. In that case, just add the symlink and you should be fine.
Technically, this symlinking is screwed up according to Linus, who says that /usr/include/asm and /usr/include/linux should contain the actual kernel headers against which your glibc library was compiled, and that these headers should never be removed unless glibc is updated. But I don't think any distros actually work that way.
edit: little foggy... just came home from work. Let's answer the question. Since VMWare is reporting a conflict, it sounds like your /usr/src/linux symlink is pointing to your old source tree, and not your current one.