An in-depth comparison of linear and non-linear joint embedding methods for bulk and single-cell multi-omics