I am not a fan of pulsein for RC input. It eats up too much time.
It might be worth using to move on to other areas of your code, but I think that in the long run you will want to use interrupts.
Here is some code that should show what I am talking about. I hacked this out of a sketch I use that morphed into a different direction. So this is old code that might not fit together. I do not have a board with me to try it. Oh, I should also give fair warning that I am not a super-experienced Arduino programmer. I am perfectly willing to accept that I have grave errors in my methodologies. But at least at one point, I did have the inputs from multiple channels from a receiver available to me inside my sketch. (And my hexapod DOES walk!) 
int Chan1Interrupt = 5; // pin 18
int Chan2Interrupt = 4; // pin 19
int Chan3Interrupt = 3; // pin 20
int Chan4Interrupt = 2; // pin 21
int Chan5Interrupt = 1; // pin 3
unsigned long Chan1_startPulse, Chan2_startPulse, Chan3_startPulse, Chan4_startPulse, Chan5_startPulse;
volatile double Chan1_val, Chan2_val, Chan3_val, Chan4_val, Chan5_val;
volatile double Chan1_val_last, Chan2_val_last, Chan3_val_last, Chan4_val_last, Chan5_val_last;
void setup()
{
attachInterrupt(Chan1Interrupt, Chan1_begin, RISING);
attachInterrupt(Chan2Interrupt, Chan2_begin, RISING);
attachInterrupt(Chan3Interrupt, Chan3_begin, RISING);
attachInterrupt(Chan4Interrupt, Chan4_begin, RISING);
attachInterrupt(Chan5Interrupt, Chan5_begin, RISING);
}
void loop()
{
//Chan1_val has the value for channel 1 from your receiver.
//same for Chan2_val, Chan3_val, Chan4_val and Chan5_val
}
void Chan1_begin() // enter Chan1_begin when interrupt pin goes HIGH.
{
Chan1_startPulse = micros(); // record microseconds() value as Chan1_startPulse
detachInterrupt(Chan1Interrupt); // after recording the value, detach the interrupt from Chan1_begin
attachInterrupt(Chan1Interrupt, Chan1_end, FALLING); // re-attach the interrupt as Chan1_end, so we can record the value when it goes low
}
void Chan1_end()
{
Chan1_val = micros() - Chan1_startPulse; // when interrupt pin goes LOW, record the total pulse length by subtracting previous start value from current micros() vlaue.
detachInterrupt(Chan1Interrupt); // detach and get ready to go HIGH again
attachInterrupt(Chan1Interrupt, Chan1_begin, RISING);
if (Chan1_val < 1000 || Chan1_val > 2000) { Chan1_val = Chan1_val_last;}
else {Chan1_val_last = Chan1_val;}
}
void Chan2_begin() // enter Chan2_begin when interrupt pin goes HIGH.
{
Chan2_startPulse = micros(); // record microseconds() value as Chan2_startPulse
detachInterrupt(Chan2Interrupt); // after recording the value, detach the interrupt from Chan2_begin
attachInterrupt(Chan2Interrupt, Chan2_end, FALLING); // re-attach the interrupt as Chan2_end, so we can record the value when it goes low
}
void Chan2_end()
{
Chan2_val = micros() - Chan2_startPulse; // when interrupt pin goes LOW, record the total pulse length by subtracting previous start value from current micros() vlaue.
detachInterrupt(Chan2Interrupt); // detach and get ready to go HIGH again
attachInterrupt(Chan2Interrupt, Chan2_begin, RISING);
if (Chan2_val < 1000 || Chan2_val > 2000) { Chan2_val = Chan2_val_last;}
else {Chan2_val_last = Chan2_val;}
}
void Chan3_begin() // enter Chan3_begin when interrupt pin goes HIGH.
{
Chan3_startPulse = micros(); // record microseconds() value as Chan3_startPulse
detachInterrupt(Chan3Interrupt); // after recording the value, detach the interrupt from Chan3_begin
attachInterrupt(Chan3Interrupt, Chan3_end, FALLING); // re-attach the interrupt as Chan3_end, so we can record the value when it goes low
}
void Chan3_end()
{
Chan3_val = micros() - Chan3_startPulse; // when interrupt pin goes LOW, record the total pulse length by subtracting previous start value from current micros() vlaue.
detachInterrupt(Chan3Interrupt); // detach and get ready to go HIGH again
attachInterrupt(Chan3Interrupt, Chan3_begin, RISING);
if (Chan3_val < 1000 || Chan3_val > 2000) { Chan3_val = Chan3_val_last;}
else {Chan3_val_last = Chan3_val;}
}
void Chan4_begin() // enter Chan4_begin when interrupt pin goes HIGH.
{
Chan4_startPulse = micros(); // record microseconds() value as Chan4_startPulse
detachInterrupt(Chan4Interrupt); // after recording the value, detach the interrupt from Chan4_begin
attachInterrupt(Chan4Interrupt, Chan4_end, FALLING); // re-attach the interrupt as Chan4_end, so we can record the value when it goes low
}
void Chan4_end()
{
Chan4_val = micros() - Chan4_startPulse; // when interrupt pin goes LOW, record the total pulse length by subtracting previous start value from current micros() vlaue.
detachInterrupt(Chan4Interrupt); // detach and get ready to go HIGH again
attachInterrupt(Chan4Interrupt, Chan4_begin, RISING);
if (Chan4_val < 1000 || Chan4_val > 2000) { Chan4_val = Chan4_val_last;}
else {Chan4_val_last = Chan4_val;}}
void Chan5_begin() // enter Chan5_begin when interrupt pin goes HIGH.
{
Chan5_startPulse = micros(); // record microseconds() value as Chan5_startPulse
detachInterrupt(Chan5Interrupt); // after recording the value, detach the interrupt from Chan5_begin
attachInterrupt(Chan5Interrupt, Chan5_end, FALLING); // re-attach the interrupt as Chan5_end, so we can record the value when it goes low
}
void Chan5_end()
{
Chan5_val = micros() - Chan5_startPulse; // when interrupt pin goes LOW, record the total pulse length by subtracting previous start value from current micros() vlaue.
detachInterrupt(Chan5Interrupt); // detach and get ready to go HIGH again
attachInterrupt(Chan5Interrupt, Chan5_begin, RISING);
if (Chan5_val < 1000 || Chan5_val > 2000) { Chan5_val = Chan5_val_last;}
else {Chan5_val_last = Chan5_val;}
}