I'm pretty sure we are only limited to those 18 colors. But, as you mentioned, you can specify many more colors through the expression. I've recently had to do that, so if you have a question about how to do that, I can provide some instructions.
In short, expand the Expression, and in "Background Color", based on a logic (like RowNo() for example), define which color to use with the rgb() function.
Hope that helps,
Agreed. Also consider building a table with RGB values for each dimension value, then using RGB(R,G,B) as the background color expression. That will let you have as many colors as you want, and the exact same color for a specific value in every chart, though it may be difficult to make them visually distinct. See attached example. It also includes random colors for dimension values that are added to the data set later, and for which you haven't assigned a specific value.