The things is, the CircuiutPython library is written for the display sold in the Adafruit shop. There's no gaurentee at all that the controller on what you have works in the same way. I do see address jumpers on the board you linked to (A0-A2) so you might be able to get it using address 0x20 (which is hardcoded for the 23008 used in the displays in the shop). Still the controller chip may not be remotely similar... but those address selectors are encouraging at least.

Thanks! Makes perfect sense. The jumpers on the board seem to add to a base that is greater than the Adafruit LCD backpack default, so I can't get to it that way. But I did download the driver software from https://github.com/adafruit/Adafruit_CircuitPython_MCP230xx, replaced mcp23008.mpy with mcp23008.py in lib on the Metro board, and changed _MCP23008_ADDRESS on line 40 from const(0x20) to const(0x27). No errors when running! However, the LCD flashed and then stayed dark. So the hardware driver on the Jansane isn't compatible with the CircuitPython code designed for the Adafruit backpack.

Just tried out a similar old LCD (KL SN102) with Circuit Playground Express and got the exact same adress error, not finding adress 20. Tried doing exactly as @craignied and got the same result, error vanished but got just a flashing screen with no characters. Guess one could use it for morse code though ;)