If you can manage two wires for each device, you could read one bit at a time from devices easily.
You have data and clock / next bit for each chip.
The data wires from all 20 devices can go into 3 x 8 bit parallel to serial shift registers linked together.... Or you can use a port expander IC which creates additional IO pins and you can connect that chip using i2c or SPI.
You can do the same for the clock/bit wires just have 3 8 bit serial to parallel shift registers (or two 16 bit, or one 24bit shift registers)
To read data from a particular device, set the bit for that device high,shift data into the shift registers, then enable the shift registers. You get your 24 bits (for 3 x 8 bit shift registers) sent to all devices.
Only the device you want gets a digital 1 (bit set).
Device sees the digital 1 and puts a bit on the data wire.
you wait 5-10ms or whatever you think it's enough, and then read the data bits from the shift registers.
set all clock bits to low, wait a few ns, then set the bit to high again to get the next data bit through the data wire.
Repeat 8 times or 16 times or whatever, as much as you need
An 8 bit shift register (serial to parallel) is less than 0.5$ for easy DIP package, here's an example:
https://www.digikey.com/product-detail/en/texas-instruments/SN74HC595N/296-1600-5-ND/277246IO Port expanders are cheap, and work both ways, input or output
PCAL6416APW 16 io pins, i2c connection to your nano :
https://www.digikey.com/product-detail/en/nxp-usa-inc/PCAL6416APW118/568-9922-1-ND/3677048https://www.digikey.com/product-detail/en/nxp-usa-inc/PCA6416APW118/568-9911-1-ND/3677037MCP23017-E/SP if you want DIP package , 16 i/o pins read/write through i2c :
https://www.digikey.com/product-detail/en/microchip-technology/MCP23017-E-SP/MCP23017-E-SP-ND/894272With the MCP23017 you can have up to 8 of them on the i2c bus, so you could have 2 of them for the data input and 2 of them for the clock signals and you can handle 32 devices.