To give you an idea of how badly that agency is exploiting you, where I live (Atlanta), the cost of living is roughly 50% of the Bay Area. Your adjusted salary for our city is $25k, which is arguably not enough to live on.
On that note, if you don't get a raise, you should see how you feel about relocating to a place where the ratio of pay/cost-of-living is better. Few places in the country have a worse ratio than the Bay Area.
I think some of the issue with CRUD development is that it feels like you're at the highest level and everybody at lower levels is making cool stuff that you only get to use. The fact is, at every level of programming, you're just a user to someone else. A CRUD programmer is just a user to a backend programmer, who is just a user to a server programmer, who is just a user to language dev, who is just a user to a compiler dev, who is just a user to a os dev, who is just a user to a hardware dev. Turtles, all the way down. I suspect, without knowing, that they are all a little bored and a little envious of each other.
Let's look on the bright side - even with CRUD, there are plenty of technological rabbit holes to dive down and do something useful. For the boilerplate - you could write a code generator. You could write something to handle automated testing - that's often pretty hard for CRUD apps (at least in the desktop world, IMHO). You could try out new design patterns, maybe state machine backed CRUD? IDK, but as a fellow dev who does a lot of CRUD, it's not all bad. It can even pay ok, if you can find a CRUD app to work on that makes money (patio11's cost-center vs revenue generator frame)