What Drupal modules do I need in order to
What Drupal/CiviCRM modules/extensions would I need to accomplish the following:
Each candidate would have content (Blog/Forum/Polls) created by them that is viewed only by Contacts within their electoral district. The electoral district relationships are in pre-loaded CiviCRM multi-value custom fields.

I would use OG and get some custom synch stuff done so that OGs are populated based on Relationships (we have done this for other clients)

Each contact (voter) would be able to see and edit (comment/poll vote) the content from #1 for each candidate in a district that the voter resides in. Content from other candidates would be invisible.

Well if we are going down the OG route for #1 then I would stick with that for this too.

A contact can be both a candidate and a voter.

Not sure what the point/question is here, but would assume Drupal Roles so that within the OG the 'voter' has more options than the 'candidate'. But if you mean they might be a Voter in one district and a candidate in another then again the OG approach would fit.

I've already got ACLs set up which associate a candidate user ID with the voter Contacts in the electoral district. I can, if necessary, create an ACL which associates a voter user ID with all the candidate Contacts in the voter's districts, although that seems very cumbersome.

It isn't clear how you are doing this since your terminology is jumping between 'user id' and presumably civi relationships, but i would use Fuzion's Permissioned Relationships extension to take care of this, and that knits well with the OG approach

I'm assuming that all of the candidate/voter interaction will occur within Drupal content.

Right, so am I - using OG in case that hasn't been clear yet ;-)