Sorry for the delay in answering (I am attending a workshop this week).
I am not quite sure I understand your latest comment. Wouldn't this negate the line NewTrackExtraList_->push_back(tracksExtras->at(track_counter)) ?

One of my first attempts had been:

  if (tracks.isValid()) {
    short track_counter = 0;
    short hit_counter = 0;
    for (auto const& track : *tracks) {
      NewTrackList_->push_back(track);
      // track extras:
      NewTrackExtraList_->push_back(tracksExtras->at(track_counter));
      NewTrackList_->back().setExtra( reco::TrackExtraRef( rTrackExtras, NewTrackExtraList_->size() - 1) );
      // rechits:
      for( trackingRecHit_iterator hit = track.recHitsBegin(); hit != track.recHitsEnd(); ++ hit ) {
        NewHitList_->push_back( hits->at(hit_counter) );
        NewTrackExtraList_->at(track_counter).add( TrackingRecHitRef( rHits, NewHitList_->size() - 1) );
        hit_counter++;
      }

      track_counter++;
    }
  }

but this doesn't even compile:

/afs/cern.ch/work/g/giamman/fastsim/mixing/CMSSW_7_0_X_2014-01-06-0200/src/FastSimulation/Tracking/plugins/RecoTrackAccumulator.cc:107:32: error: 'const class edm::OwnVector<TrackingRecHit>' has no member named 'at'
  NewHitList_->push_back( hits->at(hit_counter) );
                                ^

If I just replace the line NewHitList_->push_back( hits->at(hit_counter) ) with NewHitList_->push_back( (*hit)->clone() ) instead I get a mismatch:

----- Begin Fatal Exception 15-Jan-2014 10:02:06 CET-----------------------
An exception of category 'InvalidReference' occurred while
   [0] Processing run: 1 lumi: 1 event: 1
   [1] Running path 'simulation_step'
   [2] Calling event method for module MixingModule/'mix'
Exception Message:
Inconsistency RefCore::pushBackItem: Ref or Ptr is inconsistent with RefVector (PtrVector)id = (1:181) should be (1:162)
----- End Fatal Exception -------------------------------------------------

(indeed, the product id of TrackingRecHitsOwned "generalTracksBeforeMixing" is 162, as I see in the event content dump.)
But I think I understand the latter from your previous comment. What I don't understand is how to access the specific rechit that I want. I would expect rechits to be accessible via an index. In DataFormats/TrackingRecHit/interface/TrackingRecHitFwd.h, I see that a TrackingRecHitCollection is an edm::OwnVector of TrackingRecHits. I am not familiar with OwnVectors, and looking at DataFormats/Common/interface/OwnVector.h, I see that an ordering is defined, but no at() method, nor a [] operator. Am I obliged to use the trackingRecHit_iterator, as in my failed attempt above? (My understanding from your comment is that (*hit)->clone() is wrong in this context, because I would not be cloning the right object, but please let me know if I misunderstood.)