So I contacted an old Statistics professor I had in college about this problem, and he pointed me to the Multinomial distribution, the exact solution to solving for the odds of getting any specific count of each drop type.
I used the Multinomial function in the form of
N! / (n1! * n2! * n3! *n4!) * (p1^n1 * p2^n2 * p3^n3 * p4^n4)
Where $N$ is the total number of shrubs being cut, with the $n$'s representing each possible drop outcome, and the $p$'s the probability of each outcome occurring.
With this, I could calculate the exact odds of getting 30 green rupees x1, 10 green rupees x3, 5 blue rupees, and nothing 27 times.
However, since the multinomial doesn't have a straightforward CDF, and I wanted a CDF of total rupees, not simply counts, I still needed to calculate all of the possible combinations of drops I could get, and not just the total number, but actually each individual combination.
This problem is called a multichoose, or stars and bars problem, and it's essentially a problem where, rather than selecting a smaller group from a larger group, as is typical in combination problems, you're basically figuring out every way you can place a large number of items into a smaller number of buckets. The total number of possibilities can be calculated by
$$
\left( \! \binom{k}{n} \! \right) = \binom{k + n - 1}{n}.
$$
Where $k$ is the number of buckets, and $n$ is the number of items being placed into the buckets. (Or classically, number of bars to divide with and the number of stars). Now, this formula can get me the total number of possibilities, but not the possibilities themselves, for that I needed to brute-force the problem programmatically.
While I began by trying to write my own algorithm, I found a repository of multichoose generation functions in various languages by ekg. I used the Python version to output every possible multiset to a CSV file.
From there, in Excel I totaled up the Rupee value for each multiset, and ran the numbers through the multinomial function to get the probability of each multiset occuring.

Then I used a Pivot Table to total up the probabilities for all multisets with the same Rupee totals, and then simply used that data to get a cumulative probability for the Rupee totals.

I also did a Monte Carlo simulation of 10 million attempts in R to confirm that the numbers were correct, and they matched very neatly (closely enough in fact that I think I'd recommend a Monte Carlo solution to anyone dealing with a problem like this).
Here's the Monte Carlo code:
combos <- matrix(0, nrow=10000000, ncol=4)
for(trial in 1:10000000) {
outcomes <- sample(c(1, 2, 3, 4), size = 72, replace = TRUE, prob = c(5/16, 1/16, 1/16, 9/16))
combos[trial,] <- tabulate(outcomes, nbins=4)
}
rupeeSimulations <- apply(combos, 1, function(row) row[1]*1+row[2]*3+row[3]*5)
table(rupeeSimulations)
Graphing it in R, the result was this:

I showed this to Majora's Mask speedrunners, and the numbers didn't seem to line up with their experience. This had me dig further into the Drop Table behavior, and I discovered that Majora's Mask has a drop type that I now call "Mask Drops," where the game actually changes the drop depending on what mask the player is currently using. Turns out, Deku Scrub mask would turn that drop into green rupees, and on my original table, I had tested everything as Link, with no mask, so I got Arrows rather than rupees for that type of drop.
So in the end, discovered something completely new about the game, had to update my Drop Table Infographic (new version here), and finally I was able to get an accurate chart of this original problem, enjoy:

I learned a lot, I hadn't ever seen the multichoose and I didn't recall the multinomial function from my studies. Thank you for everyone who looked at this, big thanks to my college professor for pointing me in the right direction.