The most effective way to split by post type in custom query?

There is no need to split the query or do multiple queries. Just use the parameter orderby with value post_type to sort separated by post types. You can use a second value for additional sorting, e.g. by date. See Codex: Class Reference | WP_Query | Order & Orderby Parameters for more information.