A small piece of code to start you along with the RC portion, this is a quick and dirty way to read pulse train coming from receiver and convert it to an output (without using the Servo library).
unsigned long rcReadIn = pulseIn(rcInPin, HIGH);
The pulse width (time the pulse is high) of the signal coming in from the receiver will be between 1ms and 2ms dependent on stick position, meaning rcReadIn will be a value of between 1000 and 2000 dependent on throttle position (you can actually get outside of this range with trim, think 750 to 2250).
In this example the Arduino would simply read the pulse width and duplicate it as output on 2 pins (engineOneOut & engineTwoOut) by making the delay after the pins are set high equal to the pulse width of the incoming signal before setting the pins low again. Each of these pins would be connected to the "signal" wire of a servo. From here you would actually want to use a separate delay value for each engine and adjust those delay values based off of RPM. Probably some experimental values for adjustment as you develop your control loop, etc...
The timing specifications of RC stuff for servo control is (High) pulse width of 1ms-2ms with a pulse spacing (Low) of 20ms, meaning that you should take no longer than 20ms to cycle through your loop before you send another pulse out to the servos. In reality servos are pretty tolerant, if your pulse spacing is smaller than 20ms no problem, if it is a little larger still no problem, in one experiment I did just to see how far you could push the pulse spacing before any adverse effects really occurred I was nearing 100ms pulse spacing before there were any effects that were apparent to me (at that point the servo lost strength, as in it basically went idle between pulses and I could turn it slightly before the next pulse came).