As a programmer for almost 4 years now, I'll try and address all the issues you're presenting in turn.
I feel like relatively straightforward tasks take me far too long due to hours spent baffled by random bugs related to the large open-source library I'm working with/on
Dealing with imbedded bugs is a huge part of dealing with any application, especially one you're brought on to fix - welcome to programming.
If you're having trouble with a bug, treat it like any other programming problem, and don't be afraid to ask for help if you get stuck - that's what your co-workers are there to help with.
I don't get the sense I'm learning as much as I could be
Internships are often not as engaging a learning experience as we'd hope them to be - some companies use them to hire cheap, disposable programming assistance, others really engage their employee, and it sounds like you're hitting the former end pretty hard.
Don't get discouraged - try to treat this like an actual programming job, and on a job like this, a lot of what you resolve comes from teaching yourself. Look up answers online, consult your co-workers for help, try things until they work (in a DEV environment of course). It might often seem like you aren't making any progress, but the more you try, the more you learn (And it could also be beneficial to look up some tutorials on whatever programming language you're using, for help on the basics).
I haven't gotten the chance to interact with/learn about my full-time co-workers as I'd hoped
It is always to your benefit to ask your co-workers for help when you have a problem. We are all human, we have all been inexperienced, and we all go through the cycle of needing help and giving help. It's not wasting time - your tasks are just as important as theirs are.
I'd like to impress, but thus far my efforts on the general task I'm assigned (e.g. "Improve the performance of this algorithm") haven't done much and I'm not sure how to do better (or whether it's even possible to do better with the given algorithm).
This can be pretty disheartening - and actually does sound like a real issue. A task like 'improve the performance of this algorithm" doesn't sound like it has much direction, so unless there's a clear reason they need that algorithm's performance improved, your management might not be taking you seriously.
Unfortunately, your management being in another state is a huge problem - you can ask for more serious issues to address, but they are at their discretion what they give you, and have a huge buffer to prevent themselves from getting blowback for this decision. And this will run counterproductive to your desire to 'impress'.
You should ask for more substantial problems anyway - or at the very least, clear directions on what you should be doing. This is your internship, you are technically an employee for the duration of your internship, and you should be trying to help as much as possible. The only thing you stand to lose for asking for more work is face value to your manager - and possibly being stuck with working on an algorithm for the duration of your internship.
The bottom line is - you should try to take the first step in communicating with your co-workers, asking them for help, and trying to understand the application and programming language with them and with the online resources you have at your disposal. But as for your management - if they aren't going to give you a serious assignment, there's not much you can do to force the issue.
You could try to offer some help to your co-workers regarding their own problems though, which might prove more fruitful and rewarding. Just be aware if they feel equally squeamish about accepting help from an intern - it'll be on them if your code works or not, so it's a big risk to ask them to take, but without anything else, it could at least help you get a grasp on some raw experience.