This solution is all-discrete for minimized cost of parts. Of course, it will require more PCB space, and assembly time, but it's also simpler (no i2c, no clock required, etc.) The discrete transistors will take all of the heat off of your PIC microcontroller.
This is a kind of multiplexing -- 15 pins controlling 2 LED's each, and 2 more pins for the common which you will use to power on each group. So you'll set pins 1-15 for LED's 1-15, then turn on common1 by taking pin16 to V1. You'll leave them on for half the time (200ms?), then turn them off by setting pin16 to either GND or open. Then you'll set pins 1-15 for LED's 16-30, then turn on common2 by setting pin17 to V1. You'll leave them on for half the time, then turn them off by setting pin17 to either GND or open. Then repeat the whole process.

and every next two LED's looks like this:

The 140 ohm resistors are calculated for 100 % on time, so you'll probably have to set them more like about 70 ohms. R2, R7 are pullups, and R4,R9 are pull-downs, all of which may be optional depending on how you set the pins, and the quirks of your microcontroller. You may be able to get "digital" transistors with the pullups and base resistors integrated, possibly saving more money and/or board space. These Pre-Biased Bipolar PNP Transistor 50V 100mA 246mW SMT SOT-23-3 at Digikey are $3.60, 12 cents apiece in 30 qty, and include a 2.2K base resistor, and a 47K base-emitter resistor, integrated into the package, for frugality and assembly joy. At 100 qty, 7 cents apiece.
I would leave the 2N4401's discrete (and through-hole) so you can upgrade them if needed to a 2N2222 or TO-220 if heat is an issue (hot location, like a scoreboard). Heat shouldn't be an issue, though -- simulated and calculated as less than 100mW at each 2N4401.