I don't think your proposed redirection will work "$s1.txt" will be interpreted by shell before doing the read and this will just resulted in ".txt". Here is my little test.
$ cat in
x
y
z
$ while read s1
do
cat /etc/hosts
uname -a
done < in > "$s1.txt"
$ ls -lart
total 16
-rw-r--r-- 1 user user 6 2012-05-02 08:15 in
drwxrwxrwt 14 root root 4096 2012-05-02 08:17 ..
drwxr-xr-x 2 user user 4096 2012-05-02 08:19 .
-rw-r--r-- 1 user user 960 2012-05-02 08:19 .txt