So, that looks pretty good; I was expecting a bit longer of a document. The visual mockup looks very nice. If you choose to go the Drupal route you'll be looking at likely getting a team of three or more (or one really good one). The upside to multiple developers is that you can have one for Data/Core, one for UI, one for Application/UX - while one is doing mock-ups the other can model your database using Drupal Modules and custom tables or using some existing Drupal modules (such as Entity Reference and Voting). This would allow you to prototype faster; one dev could do all the things however, it's a straight line not three lines in parallel.
My concern with Drupal is that it is slow; that is if you're using a bunch of Drupal modules. You can increase performance by using custom modules (Data/Core + App/UX) which allow you to create a faster data structure.
With Drupal you may also need to get a "performance expert" - to come in and look at things like Varnish, Nginx, Memcache, APC and so-forth.
Another option, requiring a custom module, is to make the data store in an SQL style database but then index this data into Solr which is data-storage solution optimised for searching. It does add one more layer to your application, but it is crazy fast for read-only/view operations.
If you can scale back your requirements to just a few things (account, post, rate) and build using a "framework" like Zend or Cake or Yii. This is more custom code, however - but it's not a "from scratch" kind of thing. The upside to framework based code is that it is 100% ready to do anything you want. A CMS (Drupal, Joomla, WordPress) put a touch more restrictions on you. The framework might force you to go a bit slower which could be a good thing.
Some where is the balance of speed/features; clearly starting with less features means you can reach a "done" point faster. Then, you can start getting the customer feedback earlier. Once you have that customer "pull" you could find that some features you have on the spec are not even necessary. I've seen that happen from 100% of the feature-specs I've read (and written :/ ).
The upside to all of this however is that you can find coders/help pretty easy. PHP is easily the most popular web-programming language today - especially for this style of application. Of the CMS system WordPress is a bit more popular than Drupal. If you take a look on oDesk you can find a large number of Drupal or WordPress (and general PHP) talent. The cost is very competitive. If you choose the out-sourcing route you will need to manage this SDLC, which can be very tough. The general recommendation is to keep tasks small, meet twice a week, get estimates and measure against said estimates. You will likely hire/fire a few of these people (don't feel bad, there is plenty of work!)