Can a function return unpacked arrays like queue/Dynamic arrays?

Yes you can, but you must use a typedef to define the return type. That is because the BNF does not allow you to put an array range to the right of a function name.

typedef bit bitstream_t[$];
function bitstream_t my_funct(input bitstream_t arg);

Dave Rich