### Godot version

Godot 4.0.2

### System information

Windows 10, NVIDIA GeForce 1060 GTX 3GB, Vulkan

### Issue description

Rigidbody collision against CharacterBody3D doesn't always trigger on_body_entered signal.
This happens when both objects are moving in the same direction

### Steps to reproduce

Play the test scene.
Press the right arrow key to move the character away from the rigid body. On contact no signal is emitted.


### Minimal reproduction project

[test.zip](https://github.com/godotengine/godot/files/11160540/test.zip)

real_t jn = -(c.bounce + vn) * c.mass_normal;
			real_t jnOld = c.acc_normal_impulse;
			c.acc_normal_impulse = MAX(jnOld + jn, 0.0f);
			Vector3 j = c.normal * (c.acc_normal_impulse - jnOld);
			if (body_collides) {
				body->apply_impulse(-j, c.rA + body->get_center_of_mass());
			}
			if (soft_body_collides) {
				soft_body->apply_node_impulse(c.index_B, j);
			}
			c.acc_impulse -= j;
			c.active = true;
		}
		
		real_t friction = body->get_friction();
		Vector3 lvA = body->get_linear_velocity() + body->get_angular_velocity().cross(c.rA);
		Vector3 lvB = soft_body->get_node_velocity(c.index_B);
		Vector3 dtv = lvB - lvA;
		real_t tn = c.normal.dot(dtv);
		
		Vector3 tv = dtv - c.normal * tn;
		real_t tvl = tv.length();
		if (tvl > MIN_VELOCITY) {
			tv /= tvl;
			Vector3 temp1 = body_inv_inertia_tensor.xform(c.rA.cross(tv));
			real_t t = -tvl / (body_inv_mass + node_inv_mass + tv.dot(temp1.cross(c.rA)));
			Vector3 jt = t * tv;
			Vector3 jtOld = c.acc_tangent_impulse;
			c.acc_tangent_impulse += jt;
			real_t fi_len = c.acc_tangent_impulse.length();