If your queue depths are going to be small then there's not much you can really do as you're going to be limited by the speed of a single SSD or single device. If that's what you're doing then you may want to look at ram based solutions (acard, fusion i/o, et al) put your os on an ssd and then move what you're doing over to the ram and use that. Otherwise change your process to increase concurancy/queue depth. Multiple controllers are not an issue (and are the solution actually) for high performance. You spread your discs across them and then use the OS to create a striped volume (dynamic disc, or if $$ VxFS from veritas in windows).

Thing is your list (random i/o small block and sequential large block) are antithesis of each other. If you try to do both you'll not do either well. For large storage (you mention raid 6 & 10TB) you want for max iops to create multi-layered raids (i.e. the more raid-6's you have and striped the better for overall performance as it increases your write throughput which would otherwise be killed by the 6 for 1 penalty (3 reads+3 writes for ever write for less than a full stripe width). Would recommend small drives (146/300GB) and bunch them into several 6D+2P raid groups that you merge into one volume space. Assuming your goals apply to that as well. This also goes with multiple controllers so you could just create multiple tiers (say two controllers 4 ssd's each, raid-10 for availability; say 64 15K 300GB drives in 8 raid-6's would give ~7500read IOPS or ~800write IOPS and ~13TB of space. Or you can raid-10 those as well and get ~9TB of space but ~10000 read/4600 write iops.

What is your budget and what is your base performance goal you are looking for (since you mentioned DB work that's going to be pretty random access).