Calculating $p$:
First, note that the number of trailing zeros is the number of $5$s in the product. Every multiple of $5$ less than $96$ contributes one such factor, giving $19$ factors, and the numbers $25, 50, 75$ contribute an extra factor, giving $22$ trailing zeroes in total. So we want to find the value of
$\frac{96!}{10^{22}} \bmod 10.$
We will later use the Chinese Remainder Theorem on
$\begin{align} \frac{96!}{10^{22}} &\bmod 2, \\ \frac{96!}{10^{22}} &\bmod 5,\end{align}$
so that we now only have to find those two values separately. First, $96!$ contains many more factors $2$ than $5$, so
$\frac{96!}{10^{22}} \equiv 0 \bmod 2.$
Next, for the value modulo $5$, we first factor the number in two integers:
$\frac{96!}{10^{22}} = \frac{1 \cdot 2 \cdot 3 \cdot 4 \cdot 6 \cdot \ldots \cdot 96}{2^{22}} \cdot \frac{5 \cdot 10 \cdot 15 \cdot \ldots \cdot 95}{5^{22}}.$
Let us first look at the first term. Since
$1 \cdot 2 \cdot 3 \cdot 4 \cdot 6 \cdot \ldots \cdot 96 \equiv (1 \cdot 2 \cdot 3 \cdot 4)^{19} \cdot 1 \equiv 4^{19} \equiv (16)^9 \cdot 4 \equiv 4 \bmod 5,$
and
$2^{22} \equiv 16^{5} \cdot 4 \equiv 4 \bmod 5,$
we get
$\frac{1 \cdot 2 \cdot 3 \cdot 4 \cdot 6 \cdot \ldots \cdot 96}{2^{22}} \equiv 1 \bmod 5.$
For the other term, we have to divide out all the factors $5$ in the product to get
$\begin{align}\frac{5 \cdot 10 \cdot 15 \cdot 20 \cdot \ldots \cdot 95}{5^{22}} &= (1 \cdot 2 \cdot 3 \cdot 4 \cdot 1) (1 \cdot 2 \cdot 3 \cdot 4 \cdot 2) (1 \cdot 2 \cdot 3 \cdot 4 \cdot 3) (1 \cdot 2 \cdot 3 \cdot 4) \\ &\equiv (-1) \cdot (-2) \cdot 2 \cdot (-1) \\ &\equiv 1 \bmod 5.\end{align}$
Combining these two terms, we get
$\frac{96!}{10^{22}} = \frac{1 \cdot 2 \cdot 3 \cdot 4 \cdot 6 \cdot \ldots \cdot 96}{2^{22}} \cdot \frac{5 \cdot 10 \cdot 15 \cdot \ldots \cdot 95}{5^{22}} \equiv 1 \cdot 1 \equiv 1 \bmod 5.$
So
$\begin{align}\frac{96!}{10^{22}} &\equiv 0 \bmod 2, \\ \frac{96!}{10^{22}} &\equiv 1 \bmod 5.\end{align}$
Solving this using CRT gives us
$\frac{96!}{10^{22}} \equiv 6 \bmod 10.$
So $p = 6$.
Calculating $q$:
Let $n = 121212\ldots12$ with the pattern $(12)$ repeated $300$ times. Using the Chinese Remainder Theorem, we only need to find $n \bmod 9$ and $n \bmod 11$ to recover $n \bmod 99$. Since the sum of the digits is $900$ and is divisible by $9$, we have
$n \equiv 0 \bmod 9.$
For $n \bmod 11$, we can use the following rule:
Lemma: If $n = d_k d_{k-1} d_{k-2} \ldots d_2 d_1 d_0$ is the decimal representation of $n$, then $n \equiv d_0 - d_1 + d_2 - d_3 \pm \ldots \pm d_k \equiv \sum_{i=0}^k d_i (-1)^i \bmod 11$.
Proof: $d_k d_{k-1} d_{k-2} \ldots d_2 d_1 d_0 = \sum_{i=0}^k d_i (10)^i \equiv \sum_{i=0}^k d_i (-1)^i \bmod 11$, where we used the fact that $10 \equiv -1 \bmod 11$.
Applying this to our $n$, we get $n \equiv - 1 + 2 - 1 + 2 \mp \ldots + 2 \equiv -300 + 600 \equiv 300 \equiv 3 \bmod 11$. So we apply the Chinese Remainder Theorem to
$\begin{align} n &\equiv 0 \bmod 9, \\ n &\equiv 3 \bmod 11,\end{align}$
to obtain
$n \equiv 36 \bmod 99.$
So $q = 36$.
Combining the results:
Combining the two answers above, we get $p + q = 42$.