Holy crap.
I solved it. Hopefully this will save someone else hours and days of frustration.
fs-cifs has a '-v' option for 'verbose'. You can also add a second and (maybe) third '-v' for more and more verbose. Well, I found that '-v' also stands for 'very slow'. Using more than 1 -v slows down throughput thru fs-cifs by a factor of about 3. Using W98's System monitor, I watched the throughput of the Windows server and found it to run at 45KBps when I said -v -v and at 120KBps when I didn't use -v at all. I believe that a single -v also ran quickly, but I could be wrong there.
By running without -v, I get no skipping during normal play and a little bit of skipping sometimes when using the browser or doing heavy shell stuff. If I start phjuke this this:
phjuke &
(wait until it starts)
slay -P 15 phjuke
Then it eliminates all skipping no matter what I do, but really slows things down. Sometimes everything stops for awhile if I really beat on it. For some reason 'ps -o pid,pri,cpu,args' really kills it, I think maybe USB or the network gets messed up.
Other misc stuff I learned while playing with this.
If fs-cifs was in -verySlow mode, no amout of futzing with slay would have any effect. Madplay simply could not get it's data fast enough.
If your server has an nfs server, use it. I found that nfs has about 25% better transfer rate (according to 'time cp 4megfile /dev/null').
Swapping hardware between a 10baseT hub and 10/100 switch had no effect on a lightly-loaded network. No surprise since Audrey is usb and 10BaseT.
Although the 'cpu' option is not supported by ps, ps -o pid,pri,cpu,args does show you all of the threads of each application and their individual priorities.
slay -P does not always work. FOr example:
#phjuke
CTRL-Z
#bg
#slay -P 15 phjuke
has no effect on the priority according to ps -o pid,pri,args
Slaying it the way I mentioned above works.