spa-json: fix va_list APIs for different architectures
The va_list type might not always be a pointer in some architectures such as arm64, so we cannot guarantee it will be modified after using it for a second time in another function. This fixes the issue by using macros so args does not get copied, and always gets modified when using it more than once.