I would remove those delays() and lower the softserial baud rate to 4800.
Also notice that print(i) will output 1 to three ascii chars, while read() will return just one byte at a time.
As a transmission test sketch I'd use something like this:
void loop() {
static char ch = 'A';
softserial.print(ch);
ch++;
if (ch > 'Z') {
ch='A';
}
]
so you can see if the receiving end misses a beat.
my 2 cents.