Try adjusting the data speed timing in settings. Sometimes this can help by increasing the margin between bit signals.
The data signal is always in reference to GND, so PB and the LEDs need to have a GND in common.
It’s likely that GND is tied together at the power supply, and it sounds like the distance from PB to the power supply is small enough that your LEDs GND power line is effectively a reference GND for the data line as well. However if PB is also far away, thats additional difference between GND and data!
In general, it’s best to run ground with data to minimize any potential differences, especially over tens of feet.
If possible, a shielded cable or twisted pair will be better than a single wire. That 20 ft of wire is basically an antenna! Whats happening is that external signals are getting picked up by the wire, and turning zeros into ones, or ones into zeros.
Shielded cable can help by soaking those signals to the GND shield, preventing them from interfering with the data line. Twisted pair where one is GND (connected at both ends) and the other is data ensures that any interference is also induced to the GND signal as well, and since the data signal is interpreted in reference to GND there’s less chance of misinterpretation.
For extremely long runs, a differential signal is required (a twisted pair of data lines that are inverted mirrors of each other), and these can be further improved with isolation. For this, a transceiver is required to convert the signals at both ends. I think you should be able to get 20ft without this though.
BTW thats the kind of thing Ethernet does to get 100 meter ranges with fast speeds over twisted pair.