Also UDS have more features, for example you can get the remote peer UID and pass FDs
My approach has been to send a header with the number of fds and bytes the next packet will contain, and the number of payload bytes is naturally never 0 in my case.