As I look at this, a relational database is a general-purpose tool for hedging your bets. Modern computers are fast enough and RDBMS are well optimized so that you can grow to a pretty decent size in one box. By choosing RDBMS you provide very flexible access to your data and the ability to have powerful validity restrictions that greatly simplify data encoding. However, RDBMS will not present a good optimization for any particular problem, it just gives you the ability to easily change problems.
If you start to develop rapidly and understand that you have to scale beyond the boundaries of one database server, then it will suddenly be much more difficult for you to do. You will need to begin to identify bottlenecks and remove them. An RDBMS will be one unpleasant growling node of co-dependence that you have to tear apart. The more interconnected your data, the more work you will have to do, but you may not have to completely unravel it all. If you read hard, you might be able to handle simple replication. If you saturate your market, and growth is leveled, perhaps you can partially denormalize and outline a fixed number of database servers. Perhaps you have only a few problem tables that you can migrate to a more scalable data warehouse. Perhaps your usage profile is very convenient for caching, and you can just transfer the load to the giant memcached cluster.
If scalable keystores, such as BigTable, come in when none of the above functions work, and you have so much data of the same type, even if you denormalize one table, there is too much for one server. At this point, you should be able to split it arbitrarily and still have a clean API to access it. Naturally, when data is distributed across many machines, you cannot have algorithms that require these machines to talk to each other a lot, which will require many standard relational algorithms. Do you think these distributed query algorithms may require more full computational power than the JOIN equivalent in a properly indexed relational database, but since they are parallelized, real-time performance is orders of magnitude better than any single machine (for example, a machine that could hold the entire index, even exists).
Now that you can scale your massive data horizontally (just by connecting more servers), the hard part of scalability is done. Well, I should not say, because ongoing operations and development on this scale is much more complicated than a single-server application, but the fact is that application servers are usually trivial to scale through an architecture without shared access, so long as they can get the data they need in a timely manner.
To answer the question of how commonly used ORMs treat the inability to use JOINs, they do not give a short answer. ORM stands for Object Relational Mapping, and most of the work of ORM is simply a translation of the powerful relational paradigm of predicate logic, a simple object-oriented data structure. Most of what they give you will simply not be accessible from the keystore. In practice, you will probably need to create and maintain your own level of data access that meets your specific needs, as data profiles at these scales will change dramatically, and I believe that there are too many trade-offs for a general-purpose tool and become dominant, like in RDBMS In short, you will always have to do more work on this scale.
However, it will be definitely interesting to know which relational or other aggregate functions can be built on top of key primitives. I actually do not have enough experience to comment, but I have a lot of knowledge in the field of corporate computing about this, which happens many years ago (for example, Oracle), a lot of unused theoretical knowledge in the academic community, a lot of practical knowledge in Google, Amazon, Facebook et al., But the knowledge filtered in the wider community of developers is still quite limited.
However, now that many applications are moving to the Internet, and more and more of the world's population is online, inevitably more applications will have to scale, and best practices will begin to crystallize. The knowledge gap will be narrowed on both sides by cloud services such as AppEngine and EC2, as well as open source databases such as Cassandra. In a sense, it goes hand in hand with parallel and asynchronous computing, which is also in its infancy. Definitely a fascinating time to be a programmer.