The proper way is to compute total LED power the battery Wh and choose battery size to match time and power product with a suitable voltage.
For Voltage the optimal way is to make series strings, not parallel that add up to less than 1 diode drop below the minimum battery voltage.
Then use Ohm's law on the average voltage to get average current on the difference between the LED string voltage and the Battery.
When the integer number of LEDs is not a convenient value, consider a different battery or number of LED's or some other combination of series/parallel.
The switch must be able to sink all the parallel strings with a low voltage drop. Normally for BJT's this is when Ic/Ib=10 to 20.
e.g. for Vf+ R*If=9V for Red Vf=2.1 typ, Blue Vf=3.1 typ
thus If (red) = (9-2.1)/470=14.7mA thus LED Pd=Vf * If=2.1 * 14.7= 31 mW
thus If(blue) = (9-3.1)/470=12.6mA thus LED Pd=3.1*12.6=39mW
thus for 2 Red+ 2 Blue , LED power = 140mW, battery drain = V*I=9*2 * (14.7+12.6)= 491mW so efficiency is 140/491=28% with 27.3mA drain. This is because parallel instead of serial, most of the power is wasted in the 470 ohm Resistors.
Now if these are 5mm LEDs they can dissipate 65mW or so each, max.
To use 8 blue and 8 red, you could use 4 Red in series and 2 (sometimes 3) Blue for 9V. Thus the array of LEDs for Red is 2P4S and for Blue 4P2S
Let's choose 15mA for each "P" String So we have 2 Red + 4 Blue = 6 * 15mA= 90 mA which on a good 500mAh 9V battery may last 500/90 ~ 5h rounded down.
Using Rs = (9V-Vf)/If
Can you compute the If and single Rs for each colour? Then check Power dissipation of resistor.
Red 30mA Rs = (9V-8.4V)/30mA = 20 ohms >=1/16 W
Blue 90mA Rs = (9V-6.2V)/90mA = 31 Ohms = 1/2W or two 62R 1/4W for 2 strings each
This will waste less power than your 2x2 police flasher.
With almost 100mA LED drain, you would be wiser to use NFETs instead of NPN
simulate this circuit – Schematic created using CircuitLab
R1= 20 Ohms
R6,R7 = 62 Ohms
Increased load demands more base R and less pull-down current.