I managed to draw a textured rectangle that fills the whole screen. Had to convert all the .sprite files to 16 BPP format so the background display properly(and not hang on Cen64. Have yet to test this on hardware, but I suppose it should cope just fine):

Only bad thing is that when mirroring is enabled, the texture is also mirrored vertically. In my case I don't want it to happen, especially when drawing a simple background that is supposed to tile across the screen. Maybe the rdp code of Libdragon could be changed so the texture aren't vertically mirrored. I'll try looking into it as well when I can figure out which line of code does what.
Edit: Got it sorted out now. All I had to change was this line in rdp.c:
__rdp_ringbuffer_queue( ((texslot & 0x7) << 24) | (mirror_enabled == MIRROR_ENABLED ? 0x40100 : 0) | (hbits << 14 ) | (wbits << 4) );
to:
__rdp_ringbuffer_queue( ((texslot & 0x7) << 24) | (mirror_enabled == MIRROR_ENABLED ? 0x10100 : 0) | (hbits << 14 ) | (wbits << 4) );
Me thinks it's time to implement different types of texture mirroring, like "MIRROR_HORIZONTAL", "MIRROR_VERTICAL", and so on to allow for more free choice.
Now, to get myself to convert the soundtest sprite to 16 BPP as well. After that's done, I will resume studying the Libdragon code to find areas where further improvements could be performed.
Edit: So, I've tested the new ROM on my everdrive, and thankfully the lag seems to be gone. Drawing 32 BPP sprites sure is slower than drawing 16 BPP ones I suppose. Using a 32x64 size texture tiled across the screen also seemed to help with console performance(though on MESS the ROM now runs twice as fast. Sound still plays at normal speed on that emulator though despite this.) I also updated the testproj.zip again with the latest source, along with modified libdragon source files that makes some things in my homebrew work as intended.