If you want to be able to individually control 16 (or more) LEDs, without using every single pin on your Arduino, you need to look at some way of switching them independently.
2 options - one simple, one hard(er):
Simple: Buy some 74HC595 chips, and read this page.
Complex: Arrange LEDs in banks of 8, with a common cathode for each bank, connected to the collector of an NPN transistor. Connect (via a base current limiting resistor) each transistor base to an Arduino pin. Connect the anodes of each corresponding LED in each bank together & to an Arduino pin, via a current limiting resistor.
e.g. if you had 3 banks of LEDs: Connect LED1 of banks A,B, and C to pin 2, LED2 to pin 3, and so on. through to LED8 (connect to pin 9).
Connect the transistor base linked to bank A to pin 10, bank B to 11 and C to 12 (repeat for as many banks as you have, until you run out of pins).
Now, in code, very rapidly switch pins 10, then 11, then 12 on in turn; and whatever LEDs you need in bank A, bank B or bank C in time with their cathode pins. This is called multiplexing... You've used 11 pins, but you're controlling 24 LEDs.
However, it's WAY easier to use 3x '595 chips, and just push out 3 bytes of information every time you need to change an LED from ON to OFF; plus the LEDs are lit all the time & not just for a few milliseconds.