There's performance, then there's RAS and functionality...
Front-ending other arrays in and of itself and adding a cache layer isn't horrendously difficult.
There are a few ways to do it.
Often this involves making the hosts use the virtualizing array as their target.
If this is done, some things to consider are:
1. How is multipathing handled by the virtualizing system? As well as the underlying array?
2. How are checksums handled? How is the virtualizing array able to ensure the underlying array has proper integrity?
3. How does the virtualization affect underlying functionality like replication, QoS, clones, snaps? Existing scripts? Existing orchestration software?
4. If the front-end array will provide only cache, how will flushing be handled? And how does that affect overall reliability?
5. What's the process for front-ending? Migration? Or just path switchover? (both techniques are used by various vendors, migration is obviously more painful).
6. If I want to remove the front-ending device, is that as easy as path switchover or more convoluted?
D (disclosure: Nimble Storage employee, http://recoverymonkey.org, and overall nerd).