Questions About BJTs in My Circuit
First off your matrix has no current limit on the LEDs you need to add resistors, where you add them depends on how you intend to use the matrix. That instructible has these resistors in the "anode" circuit vetween the collector and the LED anodes. that's suitable for when you turn the rows on one at a time and then light some LEDs on each row.


  Am I trying to use the NPN BJTs completely incorrectly?


Not completely incorrectly, but you need to remember that a BJT also looks like a pair of diodes when it's not amplifying signals.

so with "V+" disconnected the BJT will pass the current that arrives through "R-Rx" on to the LED 
with the BJT grounded via a resistor the B-C diode of the BJT will divert some of the R-Rx curren to ground causing the LED to dim.


  Why does my simulation (I'm using OrCAD Capture Lite) show ~0 current through the LEDs when I can measure it at ~1 mA and there is obviously enough to light the LEDs?


Q-Cx can generate negative voltage on the collector due to internally generated photocurrent thus making enough voltage to light the LEDs. I don't think any simulators will simulate this very minor transistor effect.


  How can I adjust this circuit to achieve my goal? Should logic level MOSFETs be used instead?


Use PWM to dim the LEDs. I see a matrix:so I'm guessing you've figured out how to scan a matrix. when you want the LEDs dimmer just do each row (or column) faster and then wait for a while before doing the rescan.

you probably don't need trasnsitors on both the rows and columns which ever. is active in parallel doesn't need transistors (but does need resistors), the microcontroller can make enough current to light the LEDs, but where the currents group together you need the transistors.

R-Cx seem to be very low resistance, those resistors would be better used between the collector and the column. put 1K resistor in their place (on the base of the Q-Cx)