Is there a way for call a function and keep code running whether the called function is finished or not?
Nope. An AVR has one CPU with one core - in otherwords it can only do one thing at a time. A desktop with a dual core processor can do two things at once as it has two CPUs.
Wait I hear you cry, I've got 10 programs open on my desktop right now, but only two processors, so how can it be doing 10 things at once?
Well, its not, its only doing two things, but... Windows/Linux/etc. are called Real Time Operating Systems. They work by having a so called 'Task Scheduler' which splits the time each function gets on the CPU based on priority.
There are several RTOS for an Arduino, each designed in a different way, and who knows which is best.
However one thing you will find is that ALL of these task schedulers have to wait for any function to return. Which gets me by to my original statement of 'Nope'.