All those examples are NOT Von Neumann architectures. The 8051 is a classic example of the Harvard architecture with seperate address spaces for everything. ARM and MIPS are modified Harvard with seperate busses for code and data but you can tie these busses together into a unified memory space.
That's why I said "or derivatives". 8051 had means of seperating the areas, but most 8051 implementations I've come across (admit I've never worked with original ones) could run code from RAM without any protection, so the isolation is moot. IMO, if there is any bridge that can allow access to the same areas, then those areas are not isolated by definition. The presence of a proper MPU can mitigate this somewhat, but as I said, it's certainly not safe per se. Again, vulnerabilities are discovered all the time, and this is to be expected, since they are soft-programmable.
The Harvard architecture by itself sucks to write code from. Try to implement a fast look-up table in ROM for example. You have to copy it to RAM first so you waste a lot of memory AND your look-up tabel can be overwritten.
This is not a problem with the Harvard architecture per se. You could have separate spaces in ROM/Flash for code an constant data, and thus you wouldn't need any copying in RAM. The fact that most implementations do not provide this separation is probably just for cost reasons (doubled by the fact that it would be hard to select the right proportion of non-volatile memory dedicated to constant data and dedicated to code and please the whole market). But this mixed storage in NVM is IMO a violation of the Harvard arch, even if it's read-only.
Strictly speaking, the Harvard arch. separates code and data areas, not ROM and RAM memory spaces.
Or try to use (function) pointers.
As long as they point to code memory, there is no issue with them. The processor just needs to implement indirect calls properly, and the compilers must enforce a strict non-compatibility between function pointers and data pointers.
That said, function pointers still are potential security holes, since they can be modified at run-time. They can still only point to code areas in Harvard arch., but they may be modified to point to addresses that could run unwanted code (even if it wouldn't be arbitrary code). So granted, the Harvard arch. is not the panacea and should definitely evolve to take all those points in consideration. But I don't think that current MPUs are the right answer. They are just much better than nothing.