Initial situation
I am using an Arduino to charlieplex some LEDs. Both LEDs are actually in a single package, that is either green or red depending on the polarity. This gives me control over colour and brightness, while only using two I/O pins and two wires to the LED.

Goal and problem
I want to expand this to several strings of several LEDs. The total current and voltage exceeds what the Arduino can provide. A circuit is needed to expand every Arduino output pin with the following requirements:
• 5V logic input @ max. 5 mA
• 24V logic output @ ~10 mA
• switching @ ~1 kHz
Possible solution 1
I thought about using BJTs and/or MOSFETs and found this circuit:

Vout should be both a source and a sink for charlieplexing. Is this a proper (10 mA) sink when M1 is turned on? (I don’t think so, but I am not sure) Is there another way of doing this? Preferably with even fewer components.
Possible solution 2
I thought about using an H-bridge like you would connect a motor, but I guess it only switches polarity so it will not be able to turn both LEDs off at the same time. Then I looked at the datasheet of the L293. https://www.ti.com/lit/ds/symlink/l293.pdf

Does this look like a proper source and sink output that I could use at 24V? Could I connect it like the figure below and connect 2 LED strings to 4 Arduino pins using 1 one these?

Am I overlooking something or is there an easier solution altogether? Any help is appreciated.
I am using an Arduino to charlieplex some LEDs. Both LEDs are actually in a single package, that is either green or red depending on the polarity. This gives me control over colour and brightness, while only using two I/O pins and two wires to the LED.

Goal and problem
I want to expand this to several strings of several LEDs. The total current and voltage exceeds what the Arduino can provide. A circuit is needed to expand every Arduino output pin with the following requirements:
• 5V logic input @ max. 5 mA
• 24V logic output @ ~10 mA
• switching @ ~1 kHz
Possible solution 1
I thought about using BJTs and/or MOSFETs and found this circuit:

Vout should be both a source and a sink for charlieplexing. Is this a proper (10 mA) sink when M1 is turned on? (I don’t think so, but I am not sure) Is there another way of doing this? Preferably with even fewer components.
Possible solution 2
I thought about using an H-bridge like you would connect a motor, but I guess it only switches polarity so it will not be able to turn both LEDs off at the same time. Then I looked at the datasheet of the L293. https://www.ti.com/lit/ds/symlink/l293.pdf

Does this look like a proper source and sink output that I could use at 24V? Could I connect it like the figure below and connect 2 LED strings to 4 Arduino pins using 1 one these?

Am I overlooking something or is there an easier solution altogether? Any help is appreciated.