Currently CA can only use storage presented as a mounted filesystem. You can mount S3 but there are limitations (see http://www.turnkeylinux.org/blog/exploring-s3-based-filesystems-s3fs-and-s3backer for example)
There is support for mirroring CA-hosted media to S3, but it's just a mirror. You'll still need local storage. Building support for S3 as a first-class storage medium is something we'd very much like to do, but we're not there yet.
In terms of scalability, the bottleneck is usually the database and I/O, not CPU, except when it comes to media processing which may often be CPU bound. If you expect to process very large image files. encode lots of audio or video or handle long Word or PDF docs then having multiple servers and partitioning media processing onto specific machines may make sense.