Troubleshooting something like this is difficult at best. This probably would have worked out better if I had more space to work with, but this was the maximum size I could use for this project. Since I had a deadline to get something working (temporarily), I didn’t spend much time troubleshooting before moving on to plan B.
Now I’m back to build a more permanent solution. Given the space constraints, I’ve decided to forego perfboard and design a two sided PCB. Next time, I’ll go with a PCB in the first place. The only reason I didn’t in this case was the lack of lead time.
Lesson learned: Save the perfboard for cases where the components won’t be too close together. And, take your time.